我在Unix服务器上有一个目录,我需要压缩(递归,包括所有文件和目录)到一个存档文件,我可以FTP到我的Windows框。我需要保留目录/文件结构。
我能找到的所有帮助都说使用
之类的东西tar -cvfz myarchive.tar.gz /path/dirtocompress
但我没有" z"选项可用 - 如果我只是在控制台上键入tar
,它会向我提供使用详情,但是没有" z"选项。如果我在没有" z"的情况下尝试上述命令,它可以在没有压缩的情况下工作 - 但文件被截断,因为我的主目录中没有足够的空间来存储未压缩的文件(可用空间)由我无法控制的限制设置,而不是没有足够的可用磁盘空间。如果我使用" z"运行它,我就会得到" tar使用"输出到控制台,表明它不理解。
我还尝试将输出重定向到gzip:
tar cvf - /path/dirtocompress | gzip > myarchive.tar.gz
这会将目录压缩到一个适合我的主文件夹的存档文件中,但不保留路径结构,所以我最终得到了存档根目录中的所有文件和目录。
我没有选择在这台Unix服务器上安装任何东西,例如不同版本的tar。
如果这是Windows,我可以压缩目录,它会创建一个存档,递归地包含所有文件和文件夹并保留路径结构。如何使用上述约束在Unix上实现此目的?
答案 0 :(得分:4)
正确的命令是
tar cvf - /path/dirtocompress | gzip > myarchive.tar.gz
这会将目录压缩为一个gzip文件。正如patrix建议的那样,您可以使用以下命令验证路径是否正确存储在此文件中,该命令将文件内容列为stdout:
gunzip -c myarchive.tar.gz | tar -tvf -
问题是Windows解压缩软件没有正确解释/解压缩存档; WinZip 11.2忽略了路径。
使用7-zip for Windows,我能够解压缩文件并保留路径。