Bash |将文件复制到多个文件夹并删除它们

时间:2017-10-11 13:08:08

标签: bash find copy cp

我必须将一些文件(100 kbs /文件)从一个文件夹X复制到文件夹Y和B,之后我必须删除文件而不是文件夹。容易到现在为止,但文件夹X几乎会不断地接收文件,我可能认为可能存在这样的情况:脚本首先将5个文件复制到X然后将8个复制到Y并删除10,因为有文件不断出现。

我已经测试了2000个文件,一切都运行良好。但我必须100%确定我不会丢失任何档案。

这是我的剧本:

cp -R -v /$RootPath/MAPADMIN/$Client/Inbox/* /$RootPath/$Client/Inbox/ >> log.txt
cp -R -v /$RootPath/MAPADMIN/$Client/Inbox/* /$RootPath/Backup/$Client/Inbox >> log.txt
find /$RootPath/MAPADMIN/$Client/Inbox/ -maxdepth 2 -type f -delete >> log.txt

这个脚本对于我的情况来说是完美的,但我必须100%确定我有0%的文件丢失。 是否有人测试了类似这样的东西,所以需要更长的时间,或者有人可以帮助我改进它。

谢谢!

2 个答案:

答案 0 :(得分:0)

我建议在这种情况下使用rsync,它更可靠。

rsync  -arv /$RootPath/MAPADMIN/$Client/Inbox/ $RootPath/$Client/Inbox 2>&1 >> log.txt
rsync  -arv /$RootPath/MAPADMIN/$Client/Inbox/ /$RootPath/Backup/$Client/Inbox 2>&1 >> log.txt
find /$RootPath/MAPADMIN/$Client/Inbox/ -maxdepth 2 -type f -delete >> log.txt

答案 1 :(得分:0)

我这样更新了:

files=(*.*)

if [ "$files" != "*.*" ]
then

for file in "${files[@]}"; do

        cp "/$RootPath/$1/Outbox/$folder$file" /$RootPath/MAPADMIN/$1/Outbox/$folder
        mv "/$RootPath/$1/Outbox/$folder$file" /$RootPath/Backup/$1/Outbox/$folder
done
fi

我正在搜索该目录中的每个文件夹,然后在我搜索每个文件的每个文件夹中,我将逐个查找。 还剩3个月,使用上面的脚本移动了近50,000个文件,丢失了0%。

我希望这会对其他人有所帮助。