在redhat Linux 7.2 下运行正常
mybackup.sh
代码:
#!/bin/sh
umount /mnt/bak
mount /dev/sdb1 /mnt/bak
if [ `date +%d` = '01' ] #每月1号进行完全备份
then
bakdir="/mnt/bak/daybak/month/"`date +%m%d`
zl="" #进行完全备份
else
bakdir="/mnt/bak/daybak/"`date +%d`
zl="-N "`date +'%Y-%m-01 00:00:01'`#差异备份
#zl="-N "`date -d '-1 day' +'%Y-%m-%d 00:00:01'` #日增量备份
fi
tmpbakdir=${bakdir}tmp
rm -rf ${tmpbakdir}
mkdir ${tmpbakdir}
tar "${zl}" -czf ${tmpbakdir}/www.tgz /var/www/html
tar "${zl}" -czf ${tmpbakdir}/etc.tgz /etc
tar "${zl}" -czf ${tmpbakdir}/mysql.tgz /var/lib/mysql
tar "${zl}" -czf ${tmpbakdir}/home.tgz /home
tar "${zl}" -czf ${tmpbakdir}/name.tgz /var/name
rm -rf $bakdir
mv $tmpbakdir $bakdir
umount /mnt/bak
把mybackup.sh 放到 /etc/cron.daly 中即实现可月循环 差异/增量 备份
为方便恢复数据我使用了差异备份,如果想节约空间可以使用日总量备份,不过那样恢复数据时刻就要麻烦点了,另外你也可以很容易把上面的脚本改为周循环
事项增量备份的另外方法是利用find命令,
例如只备份一天前修改过的文件
代码:
find /var/www -type f -mtime -1 -print>/tmp/filelist.txt
linux本身不能通过命令实现异地备份。要说要说跨主机负责,可以用rcp和scp两个命令,都需要建立主机信任关系。rcp不加密,scp是基于ssh的加密拷贝。这两个命令都可以把A主机指定文件复制到B主机指定目录下。但真正实现完整异地备份功能,一般都采用专业的备份软件,可以实现全量备份,增量备份,差异备份,甚至数据库备份功能。
Linux dump命令用于备份文件系统。dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
语法:
dump[-cnu][-0123456789][-b
<区块大小>][-B<区块数目>][-d<密度>][-f<设备名称>][-h<层级>][-s<磁带长度>][-T<日期>][目录或文件系统]或dump[-wW]
参数:
-0123456789 备份的层级
-b<区块大小>指定区块的大小,单位为KB
-B<区块数目>指定备份卷册的区块数目
-c 修改备份磁带预设的密度与容量
-d<密度>设置磁带的密度,单位为BPI
-f<设备名称>指定备份设备
-h<层级>当备份层级等于或大于指定的层级时,将不备份用户标示为nodump的文件
-n 当备份工作需要管理员介入时,向所有operator群组中的使用者发出通知
-s<磁带长度>备份磁带的长度,单位为英尺
-T<日期>指定开始备份的时间与日期
-u 备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间等
-w 与-W类似,但仅显示需要备份的文件
-W 显示需要备份的文件及其最后一次备份的层级,时间与日期。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)