群主关于rsync过来文件进行大小验证的问题

回复 收藏
本帖最后由 wangjian 于 2011-7-27 11:55 编辑

铭哥,以下是我们以前机器上在跑的脚本,目前我们需要对此脚本做些修改,首先要验证一下从外地rsync过来的gz包的大小,和本地rsync过来的是否一致。如果不一致发邮件到相应人的邮箱,一致最好也发一封。
然后再验证一下从本地SCP到别一个地方的文件大小传输是否一致,如果不一致发邮件到相应的邮箱,如果一致最好也发一封。请问这个脚本该如何修改?谢谢。估计是我没介绍好这个环境,现在环境是这样的外地有一个服务器每天会自动tar一个*.gz的包,然后呢,我在北京本地的服务器上有一个脚本如下,每天通过rsync去拉外地服务器上的这个包,把这个包拉过来之后,还会SCP到第三个地方,哈
#!/usr/bin/perl -w

system("/bin/rm /data/db_dump/*");
system("/usr/bin/rsync -arv IP ::archivedir/backup/backup.tar.gz /data/db_dump/");
system("/bin/tar  xzvf /data/dump/backup.tar.gz  -C /data/dump/");
system("/bin/rm /data/dump/*.gz");

$files=`/bin/ls /data/dump/backup* 2>/dev/null | /usr/bin/wc -l`;
if($files!=0) {
        system("/usr/local/bin/sendmail");
}

system("/usr/bin/ssh user\@IP \"/bin/rm -f /data/dump/*\"");
#system("/usr/bin/scp /data/dump/* user\@IP:/data/cndump/");
system("/usr/bin/scp /data/dump/std_data_china.sql* user\@IP:/data/dump/");
system("/usr/bin/scp /data/dump/std_data_china.bin* user\@IP:/data/dump/");
system("/usr/bin/scp /data/dump/dump_china.sql* user\@IP:/data/dump/");
2011-07-27 11:23 举报
已邀请:
0

阿铭 管理员

赞同来自:

perl脚本我不在行,所以写了个shell脚本
  1. #! /bin/bash

  2. ## 对比备份文件大小是否一样
  3. IP1=1.1.1.1 // 这里设置你的外地IP
  4. IP2=2.2.2.2  // 这里设置你的另一个IP
  5. mailer=wangjian@139.com   //这里设置你的邮箱,最好是139的可以附带发短信
  6. dir=/data/db_dump/   //这里设置同步过来后的文件存放目录

  7. rsync -a user@$IP1::archivedir/backup/backup.tar.gz   $dir/backup2.tar.gz
  8. size1=`du -sk $dir/backup.tar.gz`  //这里计算推送过来的文件大小,单位是k,如果你的推送文件没有在此目录,请改动这里的参数
  9. size2=`du -sk $dir/backup2.tar.gz` //这里计算拉取过来的文件大小

  10. if [ "$size1" -eq "$size2" ] ; then
  11.         echo "从远程推送过来的文件和拉取过来的文件一致"|mail -s checkfilesize $mailer
  12.         scp $dir/backup2.tar.gz user@$IP2:/data/cndump/backup.tar.gz
  13. else
  14.         echo "推送和拉取不一致,请检查" |mail -s checkfilesize $mailer
  15. fi

  16. rm -rf $dir/backup2.tar.gz
0

赞同来自:

谢谢楼主!!!!

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: