项目需要将某目录中生成的AAAAAAA18112100018.rct文件进行定期备份,所以利用shell写了如下脚本:
- dir AAAAAAA18112100018.rct文件的所在目录
- back_dir 是备份时的备份目录,用日期进行单独存放
- logfile 为日志文件 在使用时按照实际情况将以上内容进行修改即可使用;
#!/bin/bash
# *.rct file backup
dir="/home/AAAAAAA/RCV"
back_dir="/home/AAAAAAA/BAK/$(date +%Y)/$(date +%m)/$(($(date +%d)-1))"
logfile="/root/backup/backuprct.log"
list=$(ls $dir | grep -E "^[A-Z]{7,8}[0-9]{10,11}.rct$")
File_exist(){
if [[ -f "${back_dir}/$1" ]];then
rm -f ${dir}/$1 && echo "$(date +%m-%d-%H:%M:%S):$((10#$(date +%N) / 1000000)) $1 backup Successful !!" >> $logfile
else
cp -a ${dir}/$1 ${back_dir}/$1 && sleep 0.1s && File_exist $1
fi
}
for i in ${list}
do
[[ -d "${back_dir}" ]] || mkdir -p ${back_dir}
cp -a ${dir}/$i ${back_dir}/$i
sleep 0.1s
File_exist $i
done
该脚本无定时功能,所以只能将该脚本的执行写进Linux的计划任务里: 计划任务如下:
$ crontab -e
0 00 * * * bash /root/backup/move.sh