Symlink
使用 7-Zip 在存檔中保留文件權限和符號連結
我有一個
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 結合使用來保留所有者/組狀態。