Files
判斷文件是否被修改
在 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 不能被系統管理員欺騙(即使這樣,也只能通過間接方式:通過更改系統時鐘,或通過直接訪問磁碟,繞過文件系統)。