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 结合使用来保留所有者/组状态。