如何只將好的檔案從一個目錄複製到另一個目錄?

如何只將好的檔案從一個目錄複製到另一個目錄?

我的檔案系統已損壞。我想複製“倖存者”,剩下的好文件。所以我的問題是——如何僅將好的檔案從一個目錄複製到另一個目錄。

請注意,例如一個檔案可以是 10GB,並且可以複製 5GB。因此,如果負責複製的工具立即使用目標目錄來儲存複製的內容,那麼一旦明確不可能複製整個檔案(因為它不可讀),它就應該立即刪除此類部分檔案。

好文件-- 可以從頭到尾讀取且沒有任何 I/O 錯誤的檔案。

重要的:它應該自動完成,即無需用戶互動(透過用戶互動我已經在使用 Midnight Commander)。

更新:出於實際原因,需要指定讀取檔案的最大嘗試次數,否則該工具很容易陷入無限循環,只是一遍又一遍地嘗試讀取檔案。例如,如果給定的檔案區塊無法讀取(由於 I/O 錯誤)並且進行了 X 次嘗試 - 假設該檔案不好。

答案1

有一個名為ddrescueor 的實用程式dd_rescue。這是兩個不同的實用程序,它們使用不同的方法來完成同一件事。它們將資料從 A 複製到 B,但是與 cp 不同,它們不會失敗,而是重複嘗試多次,如果無法讀取資料則跳過。
這些實用程式不支援檔案系統,但您可以手動或使用find.
但是,如果可能的話,我建議將dd_rescue整​​個損壞的磁碟機複製到某個安全位置的單一映像檔中,然後安裝映像檔並以通常的方式從那裡複製檔案。圖像將可讀,不會出現錯誤。
首先使用 dd_recue。

答案2

最簡單的方法應該是在損壞的檔案系統上運行fsck -afsck -y(如果是根檔案系統,請使用 Live CD 啟動並將其安裝為外部磁碟區)。所有可以恢復的文件最終都會到達其原始位置,其他文件最終會到達/lost+found- 如果您願意,您可以嘗試從中恢復某些內容。

上述選項的作用如下:

不同檔案系統特定的 fsck 的選項沒有標準化。如有疑問,請查閱文件系統特定檢查器的手冊頁。儘管不能保證,但大多數檔案系統檢查器都支援以下選項:

-A 毫無疑問自動修復檔案系統(謹慎使用此選項)。請注意,e2fsck(8) 支援 -a 僅用於向後相容。此選項對應到 e2fsck 的 -p 選項,可以安全使用,這與某些檔案系統檢查器支援的 -a 選項不同。

(...)

-y 對於某些特定於檔案系統的檢查器,-y 選項將導致特定於 fs 的 fsck 始終嘗試自動修復任何偵測到的檔案系統損壞。有時,專家可能能夠更好地手動驅動 fsck。請注意,並非所有特定於檔案系統的檢查器都實作此選項。特別是,截至撰寫本文時,fsck.minix(8) 和 fsck.cramfs(8) 不支援 -y 選項。

相關內容