Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 在tar z不是';有空吗?_Unix_Directory_Compression_Archive_Tar - Fatal编程技术网

Unix 在tar z不是';有空吗?

Unix 在tar z不是';有空吗?,unix,directory,compression,archive,tar,Unix,Directory,Compression,Archive,Tar,我在Unix服务器上有一个目录,我需要将它(递归地,包括所有文件和目录)压缩到一个存档文件中,然后通过FTP将其传输到我的Windows box。我需要保留目录/文件结构 我能找到的所有帮助都是使用 tar -cvfz myarchive.tar.gz /path/dirtocompress 但是我没有可用的“z”选项-如果我只是在控制台上键入tar,它会提供使用细节,但没有“z”选项。如果我在没有“z”的情况下尝试上面的命令,它在没有压缩的情况下工作-但是文件会被截断,因为我的主目录中没有足

我在Unix服务器上有一个目录,我需要将它(递归地,包括所有文件和目录)压缩到一个存档文件中,然后通过FTP将其传输到我的Windows box。我需要保留目录/文件结构

我能找到的所有帮助都是使用

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上实现这一点?

正确的命令是

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,我能够解压缩文件并保留路径。

tar cvf
应该创建一个带有目录的tar文件。如果您运行
zcat archive.tar.gz | tar tvf-
,输出是否包含路径?如果我运行您的命令,会得到
tar:Unexpected end of file
,因为它在创建时会被截断(因为主文件夹空间限制)。呃,我建议的命令只是列出压缩的tar文件的内容(如
ls-l
)。如果出现此错误,则tar文件本身可能已损坏。我在AIX上,因此必须使用
gunzip-c myarchive.tar.gz | tar-tvf-
使列表正常工作,但是,是的,它在这里显示路径。因此,我猜该过程是正确的,但WinZip没有正确执行解压缩。感谢您的帮助,诊断此问题。avo可能更好id绝对路径:
cd/sourcepath;tar-cvf-path/dirtocompress|gzip>/outputpath/myarchive.tar.gz