Filesystems
檢查根文件夾內容是否相同的最快方法?
我有一些原始的解決方案,但執行時太長了:
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
.請注意,對每個文件執行完整的校驗和必然會很慢,因為您必須完整閱讀它們。