本帖最后由 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/");
铭哥,以下是我们以前机器上在跑的脚本,目前我们需要对此脚本做些修改,首先要验证一下从外地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/");
0
perl脚本我不在行,所以写了个shell脚本
- #! /bin/bash
- ## 对比备份文件大小是否一样
- IP1=1.1.1.1 // 这里设置你的外地IP
- IP2=2.2.2.2 // 这里设置你的另一个IP
- mailer=wangjian@139.com //这里设置你的邮箱,最好是139的可以附带发短信
- dir=/data/db_dump/ //这里设置同步过来后的文件存放目录
- rsync -a user@$IP1::archivedir/backup/backup.tar.gz $dir/backup2.tar.gz
- size1=`du -sk $dir/backup.tar.gz` //这里计算推送过来的文件大小,单位是k,如果你的推送文件没有在此目录,请改动这里的参数
- size2=`du -sk $dir/backup2.tar.gz` //这里计算拉取过来的文件大小
- if [ "$size1" -eq "$size2" ] ; then
- echo "从远程推送过来的文件和拉取过来的文件一致"|mail -s checkfilesize $mailer
- scp $dir/backup2.tar.gz user@$IP2:/data/cndump/backup.tar.gz
- else
- echo "推送和拉取不一致,请检查" |mail -s checkfilesize $mailer
- fi
- rm -rf $dir/backup2.tar.gz
编辑回复