Linux bash脚本:每晚将源文件移动到备份文件夹



我们有一个cron作业来处理或处理一个目录中的许多输入源文件。处理后,将备份输入源文件。我们想编写一个脚本,将输入源文件移动到目标备份文件夹。

Surpose输入源文件为/source/input/,备份文件夹为/target/backup/

#!/bin/sh -x
init() {
day=$(date +%Y%m%d)
mkdir -p /target/backup/"${day}"/
cat > edpop+.txt << EOF
1d
wq
EOF
cat > edprint+.txt << EOF
1p
q
EOF
cat > edrep+.txt << EOF
%s/^//source/input//
wq
EOF
ls -la /source/input | tr -s ' ' | cut -d' ' -f9 > stack+.txt
ed -s stack+.txt < edpop+.txt
ed -s stack+.txt < edpop+.txt
ed -s stack+.txt < edrep+.txt
next
}
end () {
rm -v edpop+.txt
rm -v edprint+.txt
rm -v edrep+.txt
exit 0
}
next () {
[[ -s stack+.txt ]] && main
end
}
main () {
line=$(ed -s stack+.txt < edprint+.txt)
mv -v "${line}" /target/backup/"${day}"/
ed -s stack+.txt < edpop+.txt
next
}
init

可能会有一些小错误,因为我还没有真正测试过这个;但我很确定它会起作用。

bash脚本如下所示,注意:由于脚本被放入cron作业中,因此

1( 目录或文件路径最好作为绝对路径,以避免未找到的错误

2( 目标目录与输入目录不交叉。例如/来源/输入/备份/

#!/bin/bash
day=$(date +%Y%m%d)
mkdir -p /target/backup/$day/ && mv /source/input/* /target/backup/$day/