Files

基於 inode 比較兩個目錄

  • August 7, 2021

我認為與適當的解決方案相關的一些上下文:

我有一個有兩個文件夾的伺服器;一個是攝取,另一個是排序。排序後的文件夾的來源是ingest文件夾,所有目錄都是唯一的,所有文件都是硬連結。

這樣做的結果是,當攝取文件夾有文件被刪除時,它會留在排序的文件夾中,反之亦然。這使得清理幾乎不可能,因為有數十萬個文件總計約 40 TB。

我有一個腳本來添加到數據庫的所有連結,以及它們的 inode 和路徑名。然後我可以使用一些 SQL 來查找只出現一次的 inode,並決定是否要刪除它們。

這個解決方案非常慢(每次我想管理它時都需要刷新整個數據庫)並且非常笨重(需要執行查詢,然後通過 CLI 手動刪除文件)。

是否有像 ncdu 或任何雙窗格文件瀏覽器這樣的解決方案可以顯示 inode,並專門針對 inode 的連結數進行過濾(如 所示stat)?

我現在習慣於find . -type f -links +1獲取具有多個連結的所有文件,然後sed將所有連結設為絕對連結,然後ncdu -X list.txt掃描除列出的文件之外的任何文件。

這個解決方案仍然很慢,我正在尋找一個更好的解決方案,但它確實已經大大改善了我的流程,所以我將其發佈為答案

為什麼不只ls -li對兩個目錄上的文件進行處理,然後對其進行比較呢?

引用自:https://unix.stackexchange.com/questions/663706