Files

判斷文件是否被修改

  • October 4, 2019

在 Linux(目前使用 ext4 文件系統)中,如何在讀取文件內容的情況下快速檢查文件內容是否已被修改?

stat命令是推薦的方法嗎?我目前做

$ stat --format "%Y" hello.txt

稍後我可以檢查相同的命令是否產生相同的輸出。如果是這樣,我的結論是 hello.txt 沒有改變。

我的感覺是,人們想輸入更多參數以更加確定。例如,添加文件大小、文件名等是否會提供更好的文件“指紋”?

關於這個話題,我記得我曾經擁有的 TrueCrypt 卷總是被我的增量備份程序忽略,可能是因為 TrueCrypt 確保不留下任何元數據更改。我想確實有可能更改由返回的所有數據stat,因此不能保證能夠接受文件的所有可能修改?

如果您想通過正常方式檢測文件是否已被修改(在某些應用程序中編輯它,從修訂控制系統中檢出新版本,重建它等),請檢查其修改時間(mtime)是否已從最後一次檢查。這就是stat -c %Y報導。

修改時間可以通過touch命令設置。如果要檢測文件是否發生了任何變化(包括使用touch、解壓檔案等),請檢查其 inode 更改時間(ctime)是否與上次檢查發生了變化。這就是stat -c %Z報導。ctime 不能被系統管理員欺騙(即使這樣,也只能通過間接方式:通過更改系統時鐘,或通過直接訪問磁碟,繞過文件系統)。

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