场景描述:昨天晚上接到一任务,要求把DBA备份的数据从外网环境拷贝到测试环境。
文件:users_idecl2010_2012-06-27.dmp.gz    大小5G多
远程主机:暂时保密哈!
本地主机:192.168.2.161
领导要求:每秒限速300K左右。
突然想到只能用expect脚本执行。脚本如下:
[root@localhost oracle]# more rsync-108.sh
#!/usr/bin/expect
set timeout 3000
spawn rsync -avcz --bwlimit=300 root@远程主机IP:/Backup/15_21/backup/users_idecl2010_2012-06-27.dmp.gz /home/oracle
expect "password:"
send "XXXXXXXXXXXX\r"
expect "]*"
exit
interact
再写个脚本定时执行:
[root@localhost oracle]# more rsync.sh
#!/bin/bash
echo `date +%F`
echo '============= rsync begin ============' >>  /home/oracle/rsync-108.log
date '+%Y-%m-%d %T' >>  /home/oracle/rsync-108.log
echo
/home/oracle/rsync-108.sh >> /home/oracle/rsync-108.log
echo
date '+%Y-%m-%d %T' >> /home/oracle/rsync-108.log
echo '============== rsync end  ============'  >> /home/oracle/rsync-108.log
最后我放到了crontab里去执行
17 21 * * * /home/oracle/rsync.sh > /dev/null 2>&1
脚本输出的日志如下
============= rsync begin ============
2012-06-27 21:17:01
spawn rsync -avcz --bwlimit=300 root@远程主机IP:/Backup/15_21/backup/users_id
ecl2010_2012-06-27.dmp.gz /home/oracle
root@远程主机IP's password:
receiving file list ... done
users_idecl2010_2012-06-27.dmp.gz
2012-06-27 22:07:04
============== rsync end  ============
奇怪的是50分钟就拷贝完了?然后去/home/oracle目录下查找,根本没找到这个文件。我一度的以为是我的脚本或者是crontab里面没生效的问题。但是早上我拿了一个小文件测试,大概就几M,放到crontab里面马上就能拷贝过去了。很奇怪的问题,是因为文件太大导致的吗?有路过的告诉请帮忙解答!小菜鸟不胜感激!
09-14 20:07