备份、校验、删除本地数据脚本

#备份数据服务的名称
backup_server_name3="server3"
#数据保留时间,以天为单位
hold_time_min3=0
hold_time_max3=101
#备份文件关键字
backup_word3="10002020"
#需要迁移备份数据的路径
local_data_path3="/opt/server3/aaa"
#备份主机信息,默认为xx.xx.xx.xx
backup_ip3=xx.xx.xx.xx
backup_name3=root
backup_path3="/backup/bbb"
Begin3=`date +"%Y-%m-%d %H:%M:%S"`
echo "======================$backup_server_name3 $Begin3 start up backup =================" >> $LogFile
#遍历深度限制,只遍历到目录层,不遍历文件,符合条件的目录的绝对路径写到/tmp/10002020sourcedir
find $local_data_path3   -maxdepth 1  -name "$backup_word3*" -mtime +$hold_time_min3 -mtime -$hold_time_max3 > /tmp/10002020sourcedir
#开始备份
find $local_data_path3   -maxdepth 1  -name "$backup_word3*" -mtime +$hold_time_min3 -mtime -$hold_time_max3 -exec scp -r {} $backup_ip3:$backup_path3 \; >> $LogFile
for i in `cat /tmp/10002020sourcedir`
  do
    #把符合条件的一条数据写到/tmp/10002020sourcefile
    echo "$i" > /tmp/10002020sourcefile
    newfile=`awk -F / '{print $5}' /tmp/10002020sourcefile`
    md5sum `find $i -type f ` |awk '{print $1}' | sort > /tmp/10002020oldfilemd5    #源文件MD5值
    num=`cat /tmp/10002020oldfilemd5 | wc -l`
    #判断目的目录下是否有备份文件
    ssh $backup_ip3 "if [ \`ls $backup_path3\/$newfile\` >=1 ];then md5sum \`find $backup_path3/$newfile -type f\` |awk '{print \$1}' | sort > /tmp/10002020newfilemd5;  fi "  #目的文件MD5值
    k=0
    #按行循环对比源文件MD5和目的文件MD5
    for (( j=1; j<=$num;j++ ))
      do
        oldmd5=`awk 'NR=='"$j"' {print $1}' /tmp/10002020oldfilemd5`
        newmd5=`ssh $backup_ip3 "awk 'NR=='"$j"' {print $1}' /tmp/10002020newfilemd5"`
        if [ "$oldmd5" == "$newmd5" ];then
          let k++
        fi
    done
    if [ "$num" == "$k" ];then
      echo success
      rm -rf $i   #删除本地数据
    else
      echo $i >> $LogFile
      echo failure >> $LogFile
    fi
done
End3=`date +"%Y-%m-%d %H:%M:%S"`
echo "======================$backup_server_name3 $End3 end backup  =================" >> $LogFile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值