Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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
Linux GZIP不正确地用于压缩多个文件_Linux_Command Line Interface_Gzip - Fatal编程技术网

Linux GZIP不正确地用于压缩多个文件

Linux GZIP不正确地用于压缩多个文件,linux,command-line-interface,gzip,Linux,Command Line Interface,Gzip,我在一组文件上运行了命令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 我只得到一个文件,数据。

我在一组文件上运行了命令
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压缩文件,而不是目录结构

默认情况下,gzip在文件名的末尾添加.gz

在您的情况下,只需运行“gzip*”,您将拥有两个独立的.gz文件


要压缩一个结构,您可以使用tar和z选项直接压缩,而无需通过管道传输到gz。

如果您确实使用了这个命令,那么您就没有问题了。但是,也不应该有一个
data.gz
文件,除非它已经存在。无论该目录中是否已经存在
data.gz
文件,都会出现错误。要么您将得到
gzip:data.gz已经有了.gz后缀--未更改
,要么
gzip:data.gz:没有这样的文件或目录

gzip命令行上的名称被单独压缩,并生成不同的文件,命令行上的每个文件对应一个文件。
gzip file1 file2 file3的结果是file1.gz、file2.gz和file3.gz文件。恢复这些文件所需要做的就是
gunzip*.gz

更新:

现在,我们看到了您使用的实际命令,您可以查看该文件以尝试确定第一个命令的结束位置和第二个命令的开始位置

您使用
-c
选项将压缩数据写入stdout,stdout在压缩前将两个输入文件连接起来。因此
gunzip data.gz
之后的最终结果与
cat*.sas7bdat>data
相同


但是,
data.gz
文件确实在内部秘密地将这两个文件分开,尽管没有单独提取它们的实用程序。您可以使用编写自己的程序,一次提取一个成员,然后将其写入单独的文件。
inflateInit2
inflate
inflateEnd
功能,以及选择gzip格式的正确选项,一次只能提取一个成员。

确切的命令是什么?这可以更详细一点吗?在gzip中添加的细节会压缩它在参数中给出的每个文件。因此,1.sas7bdat.gz和2.sas7bdat.gz,并给你一个关于data.gz的“没有这样的文件或目录”的错误…但是我不能使用单个文件中的一些eof标志重新获取单个文件吗?我进行了压缩,得到的只是第一个文件,这两个文件的合并大小是原始压缩的一部分。问题是如何再次拆分它们获取原始文件的大小并使用
dd
进行拆分。如果您没有原始文件的大小,则信息将丢失。感谢您的帮助,我将尝试此$gzip-c*.sas7bdat | ssh-l adsrusername newserver.com'cat>/home/username/data.gz'-这是确切的命令,我只得到1个文件,与您在问题中所写的文件相差甚远。嗨,马克,谢谢你的回答和编辑;我应该在这里发布我的完整代码,因为我是一个新手,我没有得到区别