使用 7-Zip 保留存档中的文件权限和符号链接

使用 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

答案1

从这些错误报告来看,这似乎是 7-Zip 的限制:

现在,我将继续使用tar -xzf test.tgz来提取文件。

答案2

其实在文中也提到过7z 手册页对于 Unix 系统,7-Zip 不存储权限:

备份和限制 不要在 Linux/Unix 上使用 7-zip 格式进行备份,因为: - 7-zip 不存储文件的所有者/组。在 Linux/Unix 上,为了备份目录,您必须使用 tar :

  • 备份目录: tar cf - 目录 | 7za a -si 目录.tar.7z
  • 恢复备份: 7za x -so directory.tar.7z |焦油 xf -

如果您想将文件和目录(不是文件的所有者)发送给其他 Unix/MacOS/Windows 用户,可以使用 7-zip 格式。

示例:7za 目录.7z 目录

不要使用“-r”,因为该标志不会按照您的想法执行。

不要使用目录/*,因为“.” 文件(例如:“目录/“ 与“目录/.profile”不匹配)

因此,您应该能够通过将其与 TAR 结合使用来保留所有者/组状态。

相关内容