写这个脚本也加深了对 bash 数组的理解。
#!/bin/bash
#2015-11-23
echo -e "说明:\n将文件放在/app/tmp_class目录下,保证该目录下没有其他文件\n备份目录在/app/tmp下以时间命名\n\n"
echo "1./app/tomcat/"
echo "2./app/tomcat_8081/"
echo "3./app/tomcat_thirdparty/"
read -p "选择替换哪一个tomcat下的文件? " num
case $num in
1)
files=($(find /app/tmp_class/ -type f))
for file in "${files[@]}"
do
file_name=$(basename "$file")
file_dir=`dirname $file`
dst_dir=($(find /app/tomcat/webapps -type f -name "${file_name}" -exec dirname {} \;))
if [ ${#dst_dir[@]} -eq 1 ];then
rsync -a -b --backup-dir=/app/tmp/$(date +%m%d_%H_%M) $file ${dst_dir[0]}
elif [ ${#dst_dir[@]} -gt 1 ];then
echo $file"在以下目录中都存在,请手工 cp -a"
echo ${dst_dir[@]}
else
echo $file"不存在,不知道怎么替换!"
echo "请手动cp"
fi
done
;;
2)
files=($(find /app/tmp_class/ -type f))
for file in "${files[@]}"
do
file_name=$(basename "$file")
file_dir=`dirname $file`
dst_dir=($(find /app/tomcat_8081/webapps -type f -name "${file_name}" -exec dirname {} \;))
if [ ${#dst_dir[@]} -eq 1 ];then
rsync -a -b --backup-dir=/app/tmp/$(date +%m%d_%H_%M) $file ${dst_dir[0]}
elif [ ${#dst_dir[@]} -gt 1 ];then
echo $file"在以下目录中都存在,请手工 cp -a"
echo ${dst_dir[@]}
else
echo $file"不存在,不知道怎么替换!"
echo "请手动cp"
fi
done
;;
3)
files=($(find /app/tmp_class/ -type f))
for file in "${files[@]}"
do
file_name=$(basename "$file")
file_dir=`dirname $file`
dst_dir=($(find /app/tomcat_thirdparty/webapps -type f -name "${file_name}" -exec dirname {} \;))
if [ ${#dst_dir[@]} -eq 1 ];then
rsync -a -b --backup-dir=/app/tmp/$(date +%m%d_%H_%M) $file ${dst_dir[0]}
elif [ ${#dst_dir[@]} -gt 1 ];then
echo $file"在以下目录中都存在,请手工 cp -a"
echo ${dst_dir[@]}
else
echo $file"不存在,不知道怎么替换!"
echo "请手动cp"
fi
done
;;
*)
echo "error number"
esac