Permissions
tar 覆蓋只讀文件
我創建了目錄
test
,在其中創建了文件,在這個文件1.txt
中test
寫了“之前”。然後我去了cd ..
並使用了命令:
tar -cvzf ./test.tgz ./test
然後我再次進入測試目錄。再次打開
1.txt
文件。將內容更改為“之後”。我保存了文件並通過執行將 chmod 更改為只讀:chmod -w ./1.txt
所以現在我
1.txt
是只讀的。然後我上去cd ..
並提取
test.tgz
存檔。tar -xvzf ./test.tgz
然後我再次去測試目錄,做
cat 1.txt
並獲得“之前”。
發生這種情況是不合邏輯的,因為該文件被設置為只讀。為什麼會這樣?
Tar 沒有覆蓋現有的只讀文件,而是將其刪除,然後創建一個具有相同名稱的新文件。這是 -x 工作方式的結果;它通過設計替換文件的現有版本,以適應將文件附加到現有存檔的舊增量備份方法。一個 tar 歸檔文件中可能有多個版本的文件;提取完成後,只有最後一個會出現在磁碟上。這樣做的一個副作用是 tar 也會刪除文件的現有副本,即使它們在存檔中只出現一次。