use*_*117 3 unix compression directory tar archive
我在 Unix 服务器上有一个目录,我需要将其压缩(递归地,包括所有文件和目录)到一个存档文件中,我可以将其通过 FTP 传输到我的 Windows 机器。我需要保留目录/文件结构。
我能找到的所有帮助都说使用类似的东西
tar -cvfz myarchive.tar.gz /path/dirtocompress
Run Code Online (Sandbox Code Playgroud)
但我没有可用的“z”选项 - 如果我只是tar
在控制台上键入,它会向我提供使用详细信息,但没有“z”选项。如果我尝试不带“z”的上述命令,它无需压缩即可工作 - 但文件会被截断,因为我的主目录中没有足够的空间来存储未压缩的文件(可用空间是由我设置的限制设置的)无法控制,而不是因为没有足够的可用磁盘空间)。如果我使用“z”运行它,我只会将“tar 使用情况”输出到控制台,表明它不理解它。
我还尝试将输出重定向到 gzip:
tar cvf - /path/dirtocompress | gzip > myarchive.tar.gz
Run Code Online (Sandbox Code Playgroud)
这会将目录压缩为一个适合我的主文件夹的存档文件,但不会保留路径结构,因此我最终会得到存档根目录中的所有文件和目录。
我无法选择在此 Unix 服务器上安装任何内容,例如不同版本的 tar。
如果这是 Windows,我可以直接压缩目录,它会创建一个存档,递归地包含所有文件和文件夹并保留路径结构。如何使用上述限制在 Unix 上实现这一点?
正确的命令是
tar cvf - /path/dirtocompress | gzip > myarchive.tar.gz
Run Code Online (Sandbox Code Playgroud)
这会将目录压缩为一个 gzip 文件。根据patrix的建议,您可以使用以下命令验证路径是否正确存储在此文件中,该命令将文件的内容列出到标准输出:
gunzip -c myarchive.tar.gz | tar -tvf -
Run Code Online (Sandbox Code Playgroud)
问题是 Windows 解压缩软件无法正确解释/解压缩存档;WinZip 11.2 忽略路径。
使用适用于 Windows 的 7-zip,我能够解压缩该文件并保留路径。