2016-10-05 115 views
0

我在專有的linux發行版中有一些自動下載。 他們去臨時暫存盤。我想在完成主RAID陣列時移動它們。我能看到的最好辦法是檢查磁盤上的文件夾,看看內容是否在最後一刻發生了變化。如果不是那麼它可能完成下載,然後移動它。Bash腳本根據文件大小更改移動文件夾?

假設可能有數百個文件夾或只有一個在這個位置,它的所有文件都會到同一個地方。寫這個最好的方法是什麼?

我能得到的文件夾大小的列表與

du -h directory/name 

的文件夾可以從任何地方1.5MB包含多個文件到10GB

Temp Loc: /volume2/4TBScratch/Processing 
Dest Loc when complete: /volume1/S/00 Landing 

編輯: 使用此:

find /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec mv "{}" "/volume1/S/00 Landing" \; 
find: `/volume2/4TBScratch/Processing/test': No such file or directory 
4.3# 

但它是否複製相關度t文件夾和所有文件。但是錯誤讓我擔心將來可能會出現問題......是因爲有多個文件,它對根文件夾中的每個文件或文件夾運行相同的移動命令?但是,由於它在第一次迭代時移動了它,它無法在下一次找到它?

EDIT2: 使用rsync

4.3# find /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec rsync --remove-source-files "{}" "/volume1/S/00 Landing" \; 
skipping directory newtest 
skipping directory erw 

解決:EDIT3 在下面的意見幫助解決。最終腳本是這樣的:

find /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec rsync -a --remove-source-files "{}" "/volume1/S/00 Landing" \; 
find /volume2/4TBScratch/Processing -depth -type d -empty -delete 

rsync將移動文件夾和文件,但留下空的根目錄 下一個命令找到空文件夾,並將其刪除。

謝謝大家!

+0

要移動的文件夾的大小是多少?你想把它移動到哪個目錄? – Inian

+0

更新了問題。 –

+0

因此,將臨時位置中所有尺寸小於10GB的文件夾移動到實際目標位置是安全的。 – Inian

回答

1

您可以使用GNUfind的選項-size用於檢測特定大小的文件/文件夾,並使用mv-exec選項移動到目標目錄。語法是

find /volume2/4TBScratch/Processing -type d -maxdepth 1 -size -10G -exec mv "{}" "/volume1/S/00 Landing" \; 

使用rsync

find /volume2/4TBScratch/Processing -type d -maxdepth 1 -size -10G -exec rsync --remove-source-files "{}" "/volume1/S/00 Landing" \; 

大小與-標誌,以指示比提到的尺寸,其在這種情況下是10GB以下。關於使用的每個標誌的說明

  • -type d - >僅用於識別源路徑中的文件夾。
  • -maxdepth 1 - >僅查看當前的源目錄,而不是 正在遞歸。
  • -exec - >執行後面的命令。

另外,如果你想找到那些最後修改超過一定時間(分鐘)文件,find-mmin一個選項,它可以設置爲一個值。例如。 -mmin -5將返回五分鐘前修改的文件。

所以建議將其添加到您的要求,爲x因爲你需要,看看目錄中列出,那麼你可以添加-exec選項用於移動目錄

find /volume2/4TBScratch/Processing -type d -maxdepth 1 -mmin -2 -size -10G 

參考GNU文檔finding files according to size如何工作。

注意: - 添加雙引號("")以避免Bash拆分包含空格的名稱。

+0

但問題是,如果x文件夾中的文件仍在下載,它將在完成之前移動。在移動文件夾之前,我需要確保文件夾中的所有文件或最近x秒內的子文件夾的文件大小都沒有變化。 –

+0

@CarverStone:請參閱我的更新 – Inian

+0

在正確的軌道上。查看更新後的問題 –

相關問題