[Original]Linux重要文件自动增量备份
2009-12-15 update
之前的定期计划放到crongtab,会产生错误,可以查看/var/log/syslog
#grep -i CMD /var/log/syslog.0
Dec 25 00:11:01 krc /USR/SBIN/CRON[4273]: (root) CMD (tar -g /data0/snapshot_data_www -p -cvzf /data1/backup_zone/data_www/da
ta_www_`date ‘+)
Dec 25 00:11:30 krc Transfer: Get GETCMD error.Dec 25 01:01:01 krc /USR/SBIN/CRON[12617]: (root) CMD (tar -cvzf /data1/backup_zone/data_conf/usr_local_webserve_`date ‘+)
Dec 25 01:01:33 krc Transfer: Get GETCMD error.
查看以上的日志,不难发现,备份语句被截断了,在换行的时候。因此,可以有以下2种修补方案
1.手工把语句截断,利用分行符%
2.把语句放到sh脚本里,使用bash /root/scriptname.sh这样的方式执行(推荐,因为看起来更简洁)
附注:备份任务最好以高权限用户执行,因为要备份的内容文件权限各不一样,其他用户不能保证都有权限。因此,建议用root权限执行。鉴于root权限的高风险,请编辑crontab之前,先在试验环境全部run过。
·完全备份,每隔一天做增量备份(Everyday,00:01)
tar -g snapshot_data_www -p –exclude=data_www/ftp.99dev.net -cvzf /data1/backup_zone/data_www/data_www_`date ‘+%Y%m%d’`.tar.gz /data0/data_www
-g指定文件,为记录gnu tar文件变化情况;-p保留文件权限;–exclude指定打包要排除的目录,这里指定最大,变化最不经常的目录;-cvzf常见的打包选项,这里就不说了;’date ‘+%Y%m%d’`指定用`20091028`这样的格式显示文件名,详细可查看`man date`
·每周一凌晨,清空snapshot(Mon,00:10),重新做完全备份(Mon,00:11)
cat /dev/null > /data0/snapshot_data_www
·每周一清晨,删除>14天的文件(Mon,00:01)
find /data1/backup_zone/data_www/* -mtime +14 |xargs rm –f
不定期删除的话,再大的备份盘怕是也顶不住,而且备份文件太多,也不便于管理
·设定crontab内容,均以无特权用户www执行
crontab –u www -e
·crontab输出结果(任务计划文件/var/spool/cron/username)
1 0 * * 1 find /data1/backup_zone/data_www/* -mtime +14 |xargs rm -f #remove old files
10 0 * * 1 cat /dev/null > /data0/snapshot_data_www #clear the snapshot
11 0 * * * tar -g /data0/snapshot_data_www -p –exclude=data_www/ftp.99dev.net -cvzf /data1/backup_zone/data_www/data_www_`date ‘+%Y%m%d’`.tar.gz /data0/data_www #backup the data_www directory
·Tips
有时候,你只想从备份文件中恢复某个历史文件,没必要大费周章去解压那巨大的压缩文件。只须执行以下2步
1.tar ztf tarballfile.tar.gz,找出你想要的文件的路径
2.tar xvzf tarball.tar.gz ‘the file/folder what you want’ –C ‘special folder’
最近评论