设为首页 收藏本站
查看: 1010|回复: 0

[经验分享] 文件定期自动备份脚本

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-24 09:03:35 | 显示全部楼层 |阅读模式
   这是一个目录定期备份文件,通过MD5校验判断今天和昨天比较目录和文件是否有改动,如果没有则删除昨天的备份目录。减少磁盘空间的消耗。可能有些备份目录,特别大,我们一般指修改其中一类文件,我们可以选择指定的文件类型,对长期改动的文件进行备份。该脚本还可以做更多的改动,如加入函数,使用函数的方法去选择是否对指定类型文件进行备份。选择备份不是按天计算,可以精确到小时,当然要加上crontab。呵呵,这里要感谢一位博友aaao提供的MD5校验想法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
#written  by  dqznn88
#maill:   dqznn88@126.com
#date: 2014-09-23
#
DSTDIR="/backup/tomcat_$(date  +%Y%m%d)/"
POSTFIX="xml"
md5_sum_dir="/backup/tomcat/sum/"
md5_in="${DIR}"
md5_new_sum_file="${md5_sum_dir}tomcat_md5_sum.$(date  +%Y%m%d)"
md5_old_sum_file="${md5_sum_dir}tomcat_md5_sum_old"
#############################################################
# backup  directory
#       for DIRNAME  in  $(find   $DIR   -type  d )
#       do
#       #echo "dirctory name is  $DIRNAME"
#       FULLDIR=${DIRNAME/$DIR/$DSTDIR}
#       if [ ! -d  $FULLDIR   ];then
#               mkdir -p  $FULLDIR
#       fi
#       done
#       echo "backup  $DIR  directory specified  $POSTFIX"
##################################################################
if  [  ! -d  $DSTDIR ];then
cp -a  $DIR   $DSTDIR  && echo "$DIR directory  to $DSTDIR backup successfully"
################################################################
if [ ! -d ${md5_sum_dir}  ];then
        mkdir  -p  ${md5_sum_dir}
fi
find ${md5_in}  |  xargs -I {}  md5sum {} >>  $md5_new_sum_file  2>/dev/null  &&  echo "directory  md5 sum "
new_sum_ok=`md5sum -c  ${md5_new_sum_file} 2>/dev/null | awk '$2~"OK"' |wc -l`
old_sum_ok=`md5sum -c  ${md5_old_sum_file} 2>/dev/null | awk '$2~"OK"' |wc -l`
if [ ${old_sum_ok} ==  ${new_sum_ok}   ];then
        echo "because today and  yesterday content is the same,delete yesterday centent!"
        cp  $md5_new_sum_file   $md5_old_sum_file  -r
        rm  -fr  ${md5_in_yer} && rm -fr ${md5_new_sum_file}    &&  echo  "delete  old  file "
fi
##################################################################
#the  first  execute this  script,create  'md5_old_sum_file' file,afterwards,everytime  change  $DSTDIR  directory   backup 'sum_file' file.
        cp  $md5_new_sum_file   $md5_old_sum_file  -r  &>/dev/null




下面是一些变量说明
        md5_sum_dir MD5校验值存放的目录
        md5_new_sum_file新生成的存放各个备份文件MD5值文件
        md5_old_sum_file以前备份的MD5值文件
        new_sum_ok 刚刚生成的MD5文件去校验备份的目标文件,记录有几个是检验ok的。
        old_sum_ok 昨天生成的MD5文件去校验备份的目标文件,同时记录有几个是检验ok的,如果目标文件改动过,则检验结果肯定不是ok的,而且新生成和删除的文件,都会导致ok的个数不同。

        if [ ${old_sum_ok} ==  ${new_sum_ok}   ] 通过比对,检查文件是否改动,是否新增和删除文件。

解释一下这里为什么会有两个
cp  $md5_new_sum_file   $md5_old_sum_file  -r 每次执行脚本,都会刷新MD5_old_sum_file  文件的信息,保持下次校验时一定是昨天的校验文件。事实上,执行了上面的cp,下面的cp一定不会执行。
        如果你有更好的思路请给我留言。谢谢!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25249-1-1.html 上篇帖子: python 报错 wxPyDeprecationWarning: Using deprecated class PySimpleApp. 下篇帖子: 正则表达式、sed、awk相关资料笔记资料整合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表