2014-01-24 40 views
4

一个简单的问题。在x86 Solaris 10上,我尝试了以下操作来压缩文件的文件夹(数据)。如何存档和提取.tar.gz文件

tar -cvf /path/to/Data/* | gzip > /path/to/archive/Data.tar.gz 

现在,我可以用列出的文件名及其大小:

gunzip -c Data.tar.gz 

然而,当我尝试解压缩(用于验证)Data.tar.gz:

gzip -d Data.tar.gz 
tar -xvf Data.tar 

我得到一个“校验和错误”

有人可以请建议在Solaris 10中压缩和解压缩文件的正确方法。谢谢

回答

1

既然你是管道系统(你应该),你需要使用-来指示标准输入或标准输出。例如。

tar -cvf - data/* | gzip > data.tar.gz 
gzip -dc data.tar.gz | tar -xvf - 
+0

当我尝试将其解压回来时仍然出现以下错误:“tar:目录校验和错误”。请指教,谢谢 –

+0

上面的作品适合我。你在做什么与.tar.gz文件之间?这些命令是否在不同的机器上运行? –

2

你必须直接焦油CVF的输出到标准输出,能够用gzip来阅读:

tar cvf - <path> | gzip > <file> 

一般也建议使用相对路径名。如果要将其解包到另一个系统上,使用以/开头的路径可能会导致问题。牛磺酸焦油将把绝对路径转化为相对路径。的GNU tar也接受压缩选项,所以Gzip已不再是必要的:

gnutar cvfz <file> <path> 

此外,你可以这样做:

tar cvf - <path> | ssh remotehost (cd <another dir>; gzip > <file>) 

这将荏苒前更改目录。

Solaris tar的手册页有更多的例子。见man tar(8)。

16

你可以做归档 2个步骤:

$ tar cvf archive.tar file* 
$ gzip archive.tar 

(这将创建archive.tar.gz,同时去除archive.tar中。)

提取也在2个步骤:

$ gunzip archive.tar.gz 

(这将创建archive.tar中并删除archive.tar.gz。)

$ tar xvf archive.tar 

要列出文件的.gz文件中:

gzip -l archive.tar.gz 

或者,你可以使用7zip的这把所有文件一起,以及压缩它们。

7z a archive.7z Makefile* (to create archive) 
7z l archive.7z   (to list files inside the archive) 
7z e archive.7z   (to extract) 
相关问题