本篇文章给大家谈谈linux服务器备份,以及如何在Linux服务器中备份对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
一、如何在Linux服务器中备份
linux系统下使用脚本定时备份数据库,代码如下:
#!/bin/bash
#Setting
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
#默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第
#18行,则默认以tag的方式备份
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz
DBName=mysql
DBUser=root
DBPasswd=123456
BackupPath=/home///backup/mysql/mysqlbackup
LogFile=/home///backup/mysql/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End
NewFile="$BackupPath"db$(date+%y%m%d).tgz
DumpFile="$BackupPath"db$(date+%y%m%d)
OldFile="$BackupPath"db$(date+%y%m%d--date='5 days ago').tgz
echo"-------------------------------------------">>$LogFile
echo$(date+"%y-%m-%d%H:%M:%S")>>$LogFile
echo"--------------------------">>$LogFile
#Delete Old File
if [-f$OldFile ]
then
rm-f$OldFile>>$LogFile 2>&1
echo"[$OldFile]Delete Old File Suess!">>$LogFile
else
echo"[$OldFile]No Old Backup File!">>$LogFile
fi
if [-f$NewFile ]
then
echo"[$NewFile]The Backup File is exists,Can’t Backup!">>$LogFile
else
case$BackupMethod in
mysqldump*)
if [-z$DBPasswd ]
then
mysqldump-u$DBUser--opt$DBName>$DumpFile
else
mysqldump-u$DBUser-p$DBPasswd--opt$DBName>$DumpFile
fi
tar czvf$NewFile$DumpFile>>$LogFile 2>&1
echo"[$NewFile]Backup Suess!">>$LogFile
rm-rf$DumpFile
;;
mysqlhotcopy*)
rm-rf$DumpFile
mkdir$DumpFile
if [-z$DBPasswd ]
then
mysqlhotcopy-u$DBUser$DBName$DumpFile>>$LogFile 2>&1
else
mysqlhotcopy-u$DBUser-p$DBPasswd$DBName$DumpFile>>$LogFile 2>&1
fi
tar czvf$NewFile$DumpFile>>$LogFile 2>&1
echo"[$NewFile]Backup Suess!">>$LogFile
rm-rf$DumpFile
;;
*)
/etc/init.d/mysqld stop>/dev/null 2>&1
tar czvf$NewFile$DBPath>>$LogFile 2>&1
/etc/init.d/mysqld start>/dev/null 2>&1
echo"[$NewFile]Backup Suess!">>$LogFile
;;
esac
fi
echo"-------------------------------------------"
echo
#lftp-f lftp.sh如果有FTP可同时上传ftp中。
再利用crontab命令生成/var/spool/cron/root文件:
#crontab–e
//打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令
//m h dom mon dow mand
//具体意义表示:分钟小时日期月份星期命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(mand)
//如: 10 02***/home/backup/autobackupmysql.sh(表示零晨二点十分执行备份脚本)
二、linux下远程备份好的方法(详细)
对系统管理员来说,平时的工作重心应该集中在维护系统正常运转,能够正常提供服务上,这里往往牵涉到一个数据备份的问题,在我所了解的情况中,有80%的系统管理员不是太关心自己服务器的安全*,但往往对备分镜像的技术相当感兴趣,但由于商业产品的软硬件价格都相当高昂,因此往往会选择开源软件。rsync就是这样的软件,它可以满足绝大多数要求不是特别高的备份需求。1.安装rsync包 [root@rhel403 old]# rpm-q rsync
rsync-2.6.3-1
2. rsync只使用一个配置文件就是/etc/rsyncd.conf [root@rhel403 old]# more/etc/rsyncd.conf
uid= nobody
gid= nobody
max connections= 200
timeout= 600
use chroot= no
read only= yes
pid file=/var/run/rsyncd.pid
host_allow=192.168.23.100//客户端的IP写在这里
#syslog facility= local7
#log file=/var/log/rsyncd.log#rsync config
#The'standard' things [rsync_gmmold]//定义同步的路径(客户端用这个关键字)
path=/gmm/old//需要同步的路径
ment= gmmold//这个暂不知道 3.启动服务#/usr/bin/rsync--daemon 4.加入开机启动 echo"/usr/bin/rsync--daemon">>/etc/rc.local 5.检查rsync时候启动# ps-ef| grep rsync 6.停止服务#kill `cat/var/run/rsyncd.pid`---------------------------------------------------------------------------以下是客户端的配置: 1.安装rsync包 [root@rhel403 old]# rpm-q rsync
rsync-2.6.3-1
2.与服务器端同步:#rsync-auqz 192.168.23.102::rsync_gmmold/tmp/old
三、linux下备份文件
一、使用tar命令进行备份:
tar命令本来的作用是能够把很多文件放到一个小文件中进行归档,但是同时又能够对文件进行压缩。所以,一般情况下都采用tar进行文件整理和压缩。
/*把/root整个目录进行压缩备份*/
# tar cvzf/tmp/root_backup_1215.tar.gz/root
那么就能够把/tmp/root_backup_1215.tar.gz进行存储,比如保存到磁带机上等。
说明:压缩的tar档案通常的扩展名是 tar.gz、tgz、或者tar.bz2。前两个扩展名一般是使用gzip命令进行压缩的tar档案,后一个扩展名是
基于bzip2的压缩,因为压缩算法的原因,后一个压缩更强。
同时,也很容易把已经打包压缩的文件进行恢复:
/*从备份文件中进行还原*/
# tar tkvzf root_backup_1215.tar.gz
二、使用cpio备份存档:
cpio(copy in/out)命令可以建立存档,跟tar不同之处在于,能够处理标准的输入输出。顾名思义,就是复制,输入,输出的意思。
如果要备份root的文件,使用下列命令:
# find/root| cpio-o>/tmp/root_backup_1215.cpio
cpio能够使用通配符将一组文件设置成标准输入。比如,下面见所有的.tif文件建立档案:
# find*.tif| cpio-o>/tmp/back.cpio
记住,find命令很灵活,下列命令把系统中所有的.tif文件进行归档:
# find/-name'*.tif'| cpio-o>/tmp/back_tif.cpio
同时,也很容易从cpio档案中恢复文件。下列命令恢复back_tif.cpio中的文件:
# cpio-i< back_tif.cpio
和tar命令一样,cpio命令恢复从目录保存的文件时,取决于是相对路经还是绝对路经。
cpio命令还有一个优点是可以将文件发送给外部源。
例如,下列命令恢复/root主目录中的文件,并把文件发送到SCSI磁带机:
# find/root| cpio-o->/dev/st0
# cpio-i</dev/st0
四、大家怎么备份自己的linux
由于Linux系统本身的优越*,系统的备份和还原还是比较容易的。主要表现在以下方面:
1.Linux系统所有的数据都以文件的形式存在,所以备份就是拷贝文件;硬盘分区也被当成文件,所以可以克隆硬盘数据。
2.Lnux系统自带很多实用工具,比如tar、dd、rsync等,备份还原系统不需要购买或第三方软件。
3.Lnux系统在运行时其硬盘上的文件可以被覆盖,所以还原系统的时候不需要另外的引导盘。(当然,系统完全挂掉到无法启动这种情况还是需要另外的引导盘的。)
备份Linux系统的策略有很多,比如使用dd命令克隆硬盘分区:
复制代码
代码如下:
sudo dd if=/dev/sda1 of=/dev/sdb1
或者,使用tar将硬盘上的文件打包:
复制代码
代码如下:
cd/sudo tar cvpzf backup.tgz--exclude=/proc--exclude=/mnt--exclude=/sys--exclude=/backup.tgz/
还原系统的命令是:
复制代码
代码如下:
sudo dd if=/dev/sdb1 of=/dev/sda1或tar xvpfz backup.tgz-C/
但是我最终选择的是rsync命令。rsync是一个非常优秀的文件同步工具,从它的名字可以看出,它支持远程同步。当然,在备份我的桌面系统时,只需要用到它的本地同步功能就行了。之所以选择rsync,是因为它具有如下优点:
在备份还原过程中,可以保存文件原有的时间、权限、软硬等信息;
首次备份时,需要复制所有文件,但是再次备份或还原系统时,只需要复制修改过的文件。
关于rsync的使用方法,其主要参考文档是man rsync,另外,rsync也可以作为守护进程运行用来建立文件备份服务器,可以参考文档man rsyncd.conf。
桌面系统备份实战
对于我的桌面系统,我选择的备份策略是使用rsync命令将硬盘上的所有文件(当然要排除/proc和/sys目录下的内容)复制到U盘上。首先使用df-lh命令查看一下我电脑的系统占多大空间,如下图:
从上图可以看出,根目录所在的分区占用了14G,而/boot目录所在的分区才占用100多M。其实Linux系统本来不用这么臃肿,只是因为我安装了太多的软件包,比如一整套的texlive啊什么的,才占用了这么多的空间。不过这都不是事儿,反正现在U盘也便宜,所以找个32G的USB 3.0的U盘来备份我这个系统,肯定是很轻松愉快的。
新U盘插到电脑上会被自动识别,使用不带参数的mount命令可以查看U盘的设备文件和挂载路径,使用fdisk命令了解U盘的大小和分区情况。如下图:
整个U盘分成一个区我没什么意见,不过我不喜欢它的vfat文件系统,万一碰到超过4G的巨型文件怎么办?so,先umount它,然后使用mkfs.ext3为它重新建立一个文件系统,如下图:
再把U盘mount起来,挂载的路径为/media/youxia/usb。如下图:
然后,可以开始备份了,我备份的命令是:
复制代码
代码如下:
sudo rsync-Pa//media/youxia/usb/backup_20141216--exclude=/media/*--exclude=/sys/*--exclude=/proc/*--exclude=/mnt/*--exclude=/tmp/*
如下图:
下图是备份完成后的效果,可以看到整个备份过程花了59分多钟,U盘被占用15G,如下图:
如果哪天系统再崩溃了的话,只需要使用sudo rsync-Pa/media/youxia/usb/backup_20141216/即可恢复系统。