目录:

1、需求

2、图解

3、代码

备注:参考RSync命令



1、需求:

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

2、图解

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

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


北京小辉微信公众号

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


大数据资料分享请关注