Shell数据同步: 从服务器同步最新数据,并过滤结果
一、步骤
- 同步数据到本地;
- 通过serverTag过滤本次发布的版本文件;
- 如果有新数据,删除本地数据;
- 遍历目标文件,如果是战场40|50,复制到本地目录;
- 删除同步到本地的其他数据。
二、Shell 实现
#!/bin/bash
serverTag="1062627"
branch=dev
server=xxx.xxx.xxx.xxx
src_dir=/path/to/files/${branch}
dst_dir=conf/script_ini
rsync -az username@${server}:${src_dir} ${dst_dir}
contain=$(grep -lE ${serverTag} ${dst_dir}/${branch}/*.ini)
if [ -n "${contain}" ]; then
find ${dst_dir}/*.ini -print0 |xargs -0 rm -rf
for each in "${contain[@]}"
do
if grep -lE 'MapID=40|MapID=50' ${each};then
mv -f ${each} ${dst_dir}
fi
done
fi
rm -rf "${dst_dir:?}/${branch}"
三、确定战斗数据是否丰富
如果文件大于100K,则保留
find ./conf/script_ini/*.ini -type f -size -100k -print0 | xargs -0 du -h | sort -nr
find ./conf/script_ini/*.ini -type f -size -100k -print0 | xargs -0 du -h | xargs rm