爲了防止這種情況被關閉,我將問題縮小到了bash腳本中。在網絡共享中使用Bash腳本刪除重複文件
EDITED問題
我運行一個小的網絡,並在備份例行犯了一個錯誤。我每天都有rsync
運行,並且它的設置方式是,如果在源上重命名文件夾,則可能會發生備份設備上潛在的重複。
rsync -varz --no-perms --exclude-from=/path/to/exclude_file --log-file=/path/to/rsync_logs
最近用戶做出了不少改變,這導致了很多重複。
我可以用什麼樣的bash腳本策略來攻擊?我嘗試遞歸列表並輸出到文件,並使用diff
來比較這些。這使我看到了重複問題的影響。如果我可以使用某種自動化流程來刪除重複項,那將節省我大量的時間。
我開始嘗試這樣的事:
find /mnt/data/ -maxdepth 2 -mindepth 1 -type d -printf '%f\n' > data.txt
和比較:
find /mnt/backup/ -maxdepth 2 -mindepth 1 -type d -printf '%f\n' > backup.txt
我的問題的一個例子是這樣的:
drwxr-xr-x 0 bob staff 0 Jun 25 2009 7-1-08
drwxr-xr-x 0 bob staff 0 Jun 25 2009 2008-07-01
這是一個例子備份驅動器,並且這兩個目錄的內容相同。備份包含兩者並且源只有這一個:
drwxr-xr-x 0 bob staff 0 Jun 25 2009 2008-07-01
這種問題是在整個備份驅動器中。
編輯
我創建了兩個列表,並diff
編他們,然後通過手動去了,不甘心的變化。它一點也不像我原先想象的那樣糟糕,一旦我進入它。我在這裏給出了兩個答案(@Mark Pettit和@ebarrere)的+1,因爲我最終使用了每個答案中的作品。在這個實驗過程中,我運行了幾個查找命令,並且最終我也更改了我的rsync
腳本,更具體一些。感謝你們。
這是一個偉大的小命令。謝謝你的協助。我在幾個子目錄中測試了這個目錄,其中我知道有重複項目存在,並找到它們。我可以手動驗證,所以非常值得信賴。 – nicorellius