您的位置:首页 > 运维架构 > Linux

Linux:RSync实现文件备份同步图解及代码

2017-01-19 11:27 736 查看

目录:

1、需求

2、图解

3、代码

备注:参考RSync命令

http://blog.csdn.net/silentwolfyh/article/details/54613941

———————————————————————————————–

1、需求:

将Nginx文件从采集服务器同步到CDH服务器,最后放入Flume监控目录

2、图解



3、代码

[root@xiaohui nginx_log]# cat get_file_test.sh
cd /home/nginx_log
cd data/
#本地同步之前文件名称
ls *_2017*.tar.gz | sort > ../L.txt
cd -

echo '' > rsync_result.log
#远程服务器数据和本地服务器数据对比,差异的文件名称放入rsync_result.log
rsync -av --exclude="*2016*.tar.gz" --exclude="*.MD5" 192.168.1.1::donews_nginx_log data/ > rsync_result.log

#判断同步是否结束,出现total为同步完成
res=`cat ./rsync_result.log|grep total|wc -l`
while [ $res -le 0 ];do
sleep 5s
res=`cat ./rsync_result.log|grep total|wc -l`
done

cd data/
#本地同步之后文件名称
ls *_2017*.tar.gz | sort > ../R.txt
cd -
#最新同步之后的文件名称对比,差异的文件名称放入D.txt
diff ./L.txt ./R.txt |grep "tar.gz"| awk '{print $NF}' > ./D.txt

#循环解压文件,将域名加入文件开头
for f in `cat ./D.txt`
do
nf=${f::-7}
tar -zxvf ./data/$f -C ./unzip_dir/
replace_name=`echo $f |awk -F"_" '{print $1}'`
sed -i "s/^/$replace_name &/g" ./unzip_dir/$nf
done

#将解压之后的文件移至Flume检测目录
for d in `cat ./D.txt`
do
nf=${d::-7}
mv ./unzip_dir/$nf /home/flumeSpool
done


如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: