【Shell】备份某目录下的某些文件到对应的目录


项目需要将某目录中生成的AAAAAAA18112100018.rct文件进行定期备份,所以利用shell写了如下脚本:

  1. dir AAAAAAA18112100018.rct文件的所在目录
  2. back_dir 是备份时的备份目录,用日期进行单独存放
  3. 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