我在一组文件上运行了命令gzip
(以获取data.gz
),现在当我运行gunzip时,我只得到一个文件。我知道我应该使用 tar 来保留文件结构。但是,我现在可以获得单独的文件吗?
目录有两个文件1.sas7bdat
、2.sas7bdat
。我跑了:
$ gzip -c *.sas7bdat | ssh -l adsusername newserver.com 'cat > /home/username/data.gz'
现在当我运行时:
gunzip data.gz
我只得到一个文件,数据。我想要 1.sas7bdat 和 2.sas7bdat
最佳答案
如果这确实是您使用的命令,那么您就没有问题。但是,也不应该生成 data.gz
文件,除非它已经存在。无论该目录中是否已存在 data.gz
文件,都会出现错误。您可能会得到gzip: data.gz已经有.gz后缀 - 未更改
或gzip: data.gz: No such file or directory
。
gzip 命令行上的名称单独压缩,并生成不同文件,命令行上的每个文件对应一个文件。 gzip file1 file2 file3
的结果是文件 file1.gz、file2.gz 和 file3.gz。要恢复这些文件,您所需要做的就是 gunzip *.gz
。
更新:
现在我们看到了您使用的实际命令,您可以查看该文件以尝试确定第一个命令的结束位置和第二个命令的开始位置。
您使用 -c
选项将压缩数据写入 stdout,这会在压缩之前连接两个输入文件。所以gunzip data.gz
后的最终结果与cat *.sas7bdat > data
相同。
但是,data.gz
文件确实在内部 secret 地分离了这两个文件,尽管没有实用程序可以单独提取它们。您可以使用 zlib 编写自己的程序一次提取一个成员,并将它们写入单独的文件。 inflateInit2
、inflate
、inflateEnd
函数以及用于选择 gzip 格式的正确选项一次只会提取一个成员。
关于linux - GZIP 不适用于压缩多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52658178/