2017-10-11 98 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

相關問題