Filesystems

檢查根文件夾內容是否相同的最快方法?

  • March 16, 2021

我有一些原始的解決方案,但執行時太長了:

find "/home/user" -type d -printf "%P\n" | sort > "source_1d"
find "/mnt/home/user" -type d -printf "%P\n" | sort > "source_2d"
diff -u "source_1d" "source_2d"                                    # '-_d' means 'directories'

pat="/home/user"; rpt="\/home\/user"
find "$pat" -type f -print0 | sort -z | xargs -r0 sha256sum | sed -E "s/\s\s$rpt\//  .\//" | > "source_1f"
pat="/mnt/tra/home/user"; rpt="\/mnt\/tra\/home\/user"
find "$pat" -type f -print0 | sort -z | xargs -r0 sha256sum | sed -E "s/\s\s$rpt\//  .\//" | > "source_2f"
diff -u "source_1f" "source_2f"

我可以用比較中使用的第二個源的磁碟大小使用計算替換它的第二部分嗎?或者如果大小和所屬文件夾相等,ext4 並不意味著相同?

另一種方法是執行rsync --dry-run. 這將檢查兩棵樹並輸出差異。

rsync --dry-run --checksum source destination

或者您可以依靠rsync的快速方法(修改時間和大小)。

rsync --dry-run source destination

或者在可用的方法中決定使用哪個校驗和--checksum-choice。此外,如果您需要有關差異的更多資訊,您可以添加--itemize.

請注意,對每個文件執行完整的校驗和必然會很慢,因為您必須完整閱讀它們。

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