网站源码和数据库备份轮转
网站源码和数据库的定期备份的重要性大家都清楚,可以对于随备份文件的增加,不定期删除将会浪费很多时间,但是需要人为去清理感觉很麻烦,因此需要自动定期删除。
本人想到两个办法:
1 利用时间戳的差值去定期删除
2 使用logrotate去删除文件
第一种代码如下
#!/bin/bash webdir=/usr/local backdir=/usr/local/backdir var1=`date +%Y%m%d` timelimit=2592000 /usr/local/mysql/bin/mysqldump -u root -p123456 hyzn09 > $backdir/hyzn09_`date +%Y%m%d`.sql if [[ $? -eq 0 ]];then echo "mysql databases hyzn09 backup succeed" fi cd $webdir tar -zcf hyWeb_`date +%Y%m%d`.tar.gz test #!/bin/bash webdir=/usr/local backdir=/usr/local/backdir var1=`date +%Y%m%d` timelimit=2592000 #这里表示时间为30天 /usr/local/mysql/bin/mysqldump -u root -p123456 test > $backdir/test_`date +%Y%m%d`.sql if [[ $? -eq 0 ]];then echo "mysql databases test backup succeed" fi cd $webdir tar -zcf test_`date +%Y%m%d`.tar.gz test if [[ $? -eq 0 ]];then echo "webdir test backup succeed" fi mv test_`date +%Y%m%d`.tar.gz $backdir cd $backdir for i in `ls $backdir | awk -F_ ‘{print $2 }‘ | awk -F. ‘{print $1}‘` do olddate=`date -d $i +%s` newdate=`date +%s` diffdate=`expr $(($newdate-$olddate))` #通过文件创建时间与现在时间的时间戳的差值去判断是否删除文件 echo $diffdate echo $timelimit if [[ $diffdate -gt $timelimit ]];then rm -fr *$i* # echo "yes" fi done
值得注意的是,打包的时候不要使用绝对路径,会提示
tar: 从成员名中删除开头的”/”这样的警告
我就加了个cd,如果有更好的想法,望告诉本人
cd $webdir
tar -zcf hyWeb_`date +%Y%m%d`.tar.gz test
第二种就是 先备份文件,然后通过配置logrotate配置文件去删除旧文件。还可以使用python的time模块去控制文件的删除。呵呵!!!
小结:
对于一般的文件备份来说,差异备份可以使用md5sum命令删除多余文件,而全备可以使用时间戳来控制。
本文出自 “小丁子” 博客,请务必保留此出处http://dqzshine.blog.51cto.com/8093967/1590711
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。