rsync脚本优化,以及遇到的些问题

来源:互联网 发布:linux下nslookup 编辑:程序博客网 时间:2024/05/21 06:35

服务器的gs会每分钟生成一个日志,最后有一个5分钟的定时任务,将符合条件的日志汇总成一个文件,然后通过rsync传送过去。

台湾版本由于网络问题,存在一些漏报和重复的问题。

网络问题主要有丢包(ping的时候有很多丢包)和其它网络不稳定问题,比如说有的时候快,有的时候就不行。

之前国内的方案是5分钟调用一次,将生产的数据汇总成一个文件,然后rsync过去。整个过程很快,不会存在网络超时等其他问题。

但是台湾就不一样了,由于已经采用了中转机,没有更好的解决方案了。于是只能修改脚本来实现需求。


故改成如下的传送方式(优化脚本)

1.日志正常生成,然后将汇总那个文件放到一个目录中。

2.每次遍历这个目录,如果有上次生成的汇总文件,也尝试rsync一次。

3.如果一直超时,那么总有网络好的时候,会将目录中的汇总文件上报过去

4.如果上报成功,那么就将这个文件移动到备份目录中去


# 遍历文件夹内的所有文件,发送成功一个删一个ls $rsyncDir > $tempConsumeLogs/rsyncFiles.txtcat $tempConsumeLogs/rsyncFiles.txt | while read Linedo{    name=$Line    echo "begin send log file: $name"    cd ..; cd scripts    /usr/bin/rsync -avzur --progress --password-file=${work_home}/${rsync_key}  ${rsyncDir}/${name}  ${rsyncuser}@$ip_addr::${modename}    [ $? -eq 0 ] && echo "send $name success !!!!" && mv $rsyncDir/$name $backup_send  #如果发送成功,那么就备份下,否则还在那个目录中}done


遇到的问题:rsync: getcwd(): No such file or directory (2)

begin send log file: 2017-12-21-15-15-01-10001_2386574184.log===/home..tempConsumeLogs/rsyncDir/2017-12-21-15-15-01-10001_2386574184.log rsync: getcwd(): No such file or directory (2)rsync error: errors selecting input/output files, dirs (code 3) at util.c(1042) [Receiver=3.1.0]

为啥会出现这样的问题?

是由于之前机器上本身之前跑了很多rsync进程(脚本写的,5分钟就开一个,结果都没跑完就都卡主了),还有很多目录,也都删掉和kill掉了。

解决方案:切换下目录就好了

cd ..; cd scripts

原创粉丝点击