2017-10-11 118 views
0

我必须从一个文件夹X复制一些文件(100 kbs /文件)到文件夹Y和B之后,我必须删除文件而不是文件夹。到目前为止,文件夹X几乎会不断地接收文件,我可能会认为可能会出现这样的情况:脚本首先将5个文件复制到X,然后将8个文件复制到Y,然后删除10个文件,因为文件连续传送。Bash |复制文件到多个文件夹并删除它们脚本

我测试过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%丢失的文件。 有没有人测试过这样的东西,所以需要更长的时间或者可以帮助我改进的人。

谢谢!

+0

请注意,您的源文件也可能在复制过程中更改(增长)......我将遍历源文件,并在每次迭代中计算当前文件的md5sum,将其复制到其两个目标文件夹并检查它的md5sum没有改变。如果没有,请删除源文件。如果是,请删除这两个副本,但不要删除源。它会解决你的问题吗? –

回答

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%。

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

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 
+0

你能给我提供一个基于我的脚本的例子吗? – Theodor

相关问题