Symlink

使用 7-Zip 在存檔中保留文件權限和符號連結

  • March 5, 2022

我有一個test包含三個文件的目錄ls -l test

total 8
-rw-r--r-- 1 mb mb 16 Jul 25 11:12 regular_file
-rwxr-xr-x 1 mb mb 19 Jul 25 11:02 script.sh
lrwxrwxrwx 1 mb mb 12 Jul 25 11:14 symlink -> regular_file

它包含一個正常文件、一個符號連結和一個可執行腳本。

用 歸檔這個目錄後tar -czf test.tgz test/,我想用 7-Zip 解壓這三個文件:

7z x -tgzip test.tgz && 7z x -ttar test.tar

不幸的是,7-Zip 不生成原始文件:該腳本失去了可執行位,symlink不再是符號連結,而是包含文本的文件regular_file

total 12
-rw-r--r-- 1 mb mb 16 Jul 25 11:12 regular_file
-rw-r--r-- 1 mb mb 19 Jul 25 11:02 script.sh
-rw-r--r-- 1 mb mb 12 Jul 25 12:16 symlink

另一方面,我可以使用它們的權限和符號連結完整地提取文件

tar -xzf test.tgz

有沒有辦法讓 7-Zip 在存檔之前提取文件?


7-Zip 版本是16.02。我在Arch Linux 5.7.7 上。

這是使用創建的存檔tar

從這些錯誤報告來看,這似乎是 7-Zip 的限制:

現在,我將繼續使用tar -xzf test.tgz來提取文件。

實際上在7z 手冊頁中提到,對於 Unix 系統,7-Zip 不儲存權限:

備份和限制 不要在 Linux/Unix 上使用 7-zip 格式進行備份,因為: - 7-zip 不儲存文件的所有者/組。在 Linux/Unix 上,為了備份目錄,您必須使用 tar :

  • 備份目錄: tar cf - directory | 7za a -si 目錄.tar.7z
  • 恢復備份:7za x -so directory.tar.7z | 焦油 xf -

如果要將文件和目錄(不是文件的所有者)發送給其他 Unix/MacOS/Windows 使用者,可以使用 7-zip 格式。

範例:7za 一個目錄.7z 目錄

不要使用“-r”,因為這個標誌不符合你的想法。

不要使用 directory/* 因為“. ”文件(例如:“directory/ ”與“directory/.profile”不匹配)

因此,您應該能夠通過將其與 TAR 結合使用來保留所有者/組狀態。

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