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

shell学习之系统文件备份之脚本分析

[复制链接]

尚未签到

发表于 2018-8-20 10:51:49 | 显示全部楼层 |阅读模式
  以下的脚本最主要的一条命令就是:
  cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES ${SOURCE_DIR[@]} ##创建好的备份目录中,执行备份命令,以下就是一个完整的命令例子:
  tar -g /tmp/snapshot -czvf /tmp/2017_full_sysbak.tar.gz /data/sh ##第一次创建快照完整备份,将/data/sh目录打包压缩到/tmp/下并保存为2017_full_sysbak.tar.gz,如果/data/sh下的文件增加了,我们则进行增量备份如下:
  tar -g /tmp/snapshot -czvf /tmp/2017_add_sysbak.tar.gz /data/sh/ ----再次利用原来的快照增量备份,只是备份增加的那部分文件
  以下的脚本要实现的是规范的备份,可以将其加入到crontab中指定在每晚凌晨执行,例如:
  crontab -e
  0  0 * * * /bin/bash /data/sh/toolscript/auto_system_backup.sh  /var/log/  >>/tmp/backup.log ###每天凌晨执行备份日志目录并追加相关日志信息
  -----------------------------脚本auto_system_backup.sh---------------------------------------------------------------------------------
  #!/bin/bash
  #automatic backup linux system files
  #author robin 2017-4-4
  #define variable   ##参数定义
  SOURCE_DIR=( $* )    ##以数组的形式存放需要备份的目录,执行脚本时需要手动指定
  TARGET_DIR=/data/backup/  ##指定备份路径
  YEAR=`date +%Y`   ##年参数,这些都是用于建立层级目录
  MONTH=`date +%m` ##月参数
  DAY=`date +%d`  ##日参数
  WEEK=`date +%u` ##星期参数
  A_NAME=`date +%H%M` ##时分参数
  FILES=${A_NAME}_system_backup.tgz  ##定义压缩文件格式,也可以压缩为别的tar.gz等格式
  CODE=$? ##判断是否有错
  #Juge the inter file exist  ###这里首先要判断在执行脚本时有没有指定参数,也就是要备份的目录
  if [ -z "$*" ];then       #如果没有指定参数则提示你
  echo -e "\033[32mUsage:\nPlease Enter Your Backup Files or Directories\n-------------------------------\n\nUsage: { $0 /boot /etc} \033[0m"  ##提示信息
  exit
  fi
  #Determine Whether the Target Directory Exists ##注释信息
  if [ ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ];then ##判断当天的备份目录是否存在
  mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY   ##创建该目录
  echo -e "\033[32mThe $TARGET_DIR Created Successfully! \033[0m"  ##提示信息
  #EXEC Full_Backup Function Command  ##提示以下是完整备份函数
  Full_Backup()
  {
  if [ "$WEEK" -eq "7" ];then  ##这里指定的是周末进行完整备份
  rm -rf $TARGET_DIR/snapshot  ##首先删除掉原有本分目录下的快照
  cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES ${SOURCE_DIR[@]}  ##这里就是完整备份的命令,解释一下${SOURCE_DIR[@]},这就是你需要指定的一个或者多个需要备份的目录,以数组形式存在,例如:sh /date/auto_backup.sh /etc /home
  [ "$CODE" == "0" ]&&echo -e "----------------------------\n\033[32mThese Full_Backup System Files Backup SuccessFully !\033[0m"  ##提示信息,表示如果以上的命令都没有问题则出现提示信息表示成功。下面一个函数也一样
  fi
  }
  #Perform incremental BACPUP Function Command  ##提示下面是增量更新的函数
  Add_Backup()
  {
  if [ "$WEEK" -ne "7" ];then  ##这里指定的是除开周末则进行增量更新
  cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf update$FILES ${SOURCE_DIR[@]} ##这条语句的差别与上面一条在于备份名字罢了
  [ "$CODE" == "0" ]&&echo -e "----------------------------\n\033[32mThese Full_Backup System Files $TARGET_DIR/$YEAR/$MONTH/$DAY/${YEAR}_$A_NAME$FILES Backup SuccessFully !\033[0m" ##也是提示信息
  fi
  }
  sleep 3 ##延时3秒在继续以下动作
  Full_Backup;Add_Backup ##调用函数,代码的执行顺序是函数最后执行,先执行前面的两个判断语句再调用函数处理
  ---------------------------------------------------------------------------------------------------------
  以下是本人的测试信息:
DSC0000.png

  最后提示的是增量更新成功,如果要进行完整 更新可以将系统时间修改到星期天,或者修改代码中的[ "$WEEK" -eq "7" ]为你当前系统的时间,再去执行该脚本。
DSC0001.png

  可以看到上图中的备份文件/09/0002_system_backup.tgz周末9号的完整备份,04/update1549_system_backup.tgz周二4号的增量备份
  注:以上的脚本可以根据您的实际需要进行更改,实现更多的功能。


运维网声明 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-554197-1-1.html 上篇帖子: 完全备份数据和差异备份数据的shell脚本 下篇帖子: shell中case的讲解及实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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