遞歸比較大目錄 - 但忽略子目錄 - 比較兩個備份 - 使用 gui
我有 2 個非常舊的朋友電腦的備份。它們被簡單地複製到每個外部硬碟驅動器上的一個文件夾中。兩者的大小約為 300GB,內容非常相似但不完全相同,文件夾結構也不同。我想釋放該空間並為這兩個空間做一個備份。我認為大約 90% 的文件是重複的,但我不想錯過那些不是的文件。
所以我需要一個程序,將兩個目錄中的文件與其所有子目錄進行比較,但忽略這些子目錄。文件夾 A 中的所有文件都應與文件夾 B 中的所有文件進行比較。文件夾 B 中的所有精確重複項都應標記/移動(/刪除)。我將手動處理文件夾 B 中的剩餘部分。
我試過融合,我試過 Gnome-Commander(我正在使用帶有 XFCE 的 Xubuntu)
我會喜歡 gui 解決方案,但我也應該能夠處理終端和腳本。我認為可以為雙方建立一個文件列表並將它們傳遞給一些差異程序,但是如何準確地做到這一點超出了我的能力。
嗯,期待你的回答,龜紫
如果目的是保留文件內容(避免失去數據),我將專注於文件平等,而不是文件目錄的命名。
首先在每個頂級文件夾上執行它,然後保存輸出(它將執行一段時間!)。
find FolderA -type f -print0 | xargs -0 cksum > FoldA.cksum find FolderB -type f -print0 | xargs -0 cksum > FoldB.cksum
將兩個輸出排序在一起,將任何相同的文件內容放在一起。然後開始編寫 awk 以根據前兩個欄位(校驗和和大小)對相同的內容進行分組。
(a) 任何單行組都是要保存的唯一文件。
(b) 任何更大的組都是相同文件的列表。也可以保留最上面的一個,並將其他名稱寫入列表以供刪除(這些可能是 A 和 B 之間的重複,或在 A 內,或在 B 內,或兩者兼而有之。
所有重複文件現在將僅在您的 FolderA 名稱中,大約一半的唯一文件也將如此。您如何處理所選副本來自 FolderB 的文件(假設您需要合併剩餘部分)?
如果它們的路徑名(從 FolderB 之後到最低目錄)存在於 FolderA 中,那麼您可能需要通過另一個輸出列表將它們移動到其中。
如果它們在 FolderA 中的路徑名不存在,您可能會猜測它們真正屬於哪裡。您可以創建適當的目錄(及其所有父目錄)並冒著誤放它的風險,或者觀察它以查看它是否對應於其他任何地方。
最後兩個步驟都需要額外檢查:您是否有兩個(或多個)同名的不同文件。在這種情況下,您需要選擇一些解析度(例如始終保留較新的版本),或擴展文件名以使其唯一,或單獨檢查每種情況。
我的方法是漸進式地工作:首先處理確切的重複文件(估計為 90%),然後評估可用於協調其余文件的任何模式的差異。