Linux:RSync实现文件备份同步图解及代码
原创
©著作权归作者所有:来自51CTO博客作者北京小辉的原创作品,请联系作者获取转载授权,否则将追究法律责任
目录:
1、需求
2、图解
3、代码
备注:参考RSync命令
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
北京小辉微信公众号
大数据资料分享请关注