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

Bash | Copy files to multiple folders and delete them script

我必须将一些文件 (100 kbs/file) 从一个文件夹 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% 丢失的文件。 有没有人测试过这样的东西这么长时间或者有人可以帮助我改进它。

谢谢!

我建议在这种情况下使用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

我是这样更新的:

files=(*.*)

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

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

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

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

希望对其他人有所帮助。