Permissions

tar 覆蓋只讀文件

  • March 2, 2012

我創建了目錄test,在其中創建了文件,在這個文件1.txttest寫了“之前”。然後我去了

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 也會刪除文件的現有副本,即使它們在存檔中只出現一次。

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