我想使用 gzip 命令行工具压缩文本文件,同时保留原始文件。默认运行以下命令
gzip file.txt
Run Code Online (Sandbox Code Playgroud)
导致修改此文件并重命名它file.txt.gz。而不是这种行为,除了现有的file.txt. 现在我使用以下命令来做到这一点
gzip -c file.txt > file.txt.gz
Run Code Online (Sandbox Code Playgroud)
它有效,但我想知道为什么没有更简单的解决方案来完成如此常见的任务?也许我错过了这样做的选择?
越来越多的tar存档使用xz基于 LZMA2的格式进行压缩,而不是传统的bzip2(bz2)压缩。事实上,kernel.org于2013 年 12 月 27日晚发布了“再见 bzip2 ”公告,表明内核源代码将从此时起以 tar.gz 和 tar.xz 格式发布 - 并在网站主页上发布直接提供的是在tar.xz.
是否有任何具体原因可以解释为什么会发生这种情况以及gzip在这种情况下的相关性是什么?
我有一个文件file.gz,当我尝试使用 解压缩该文件时gunzip file.gz,它解压缩了该文件,但仅包含已提取并删除的file.gz文件。
如何通过保留解压缩文件和压缩文件来解压缩?
root@server # tar fcz bkup.tar.gz /home/foo/
tar: Removing leading `/' from member names
Run Code Online (Sandbox Code Playgroud)
如何解决此问题并保留/文件名?
我在5GB存档上使用此命令
tar -zxvf archive.tar.gz /folder/in/archive
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?似乎永远没有命令行输出......
我在 Python 中创建了 zlib 压缩数据,如下所示:
import zlib
s = '...'
z = zlib.compress(s)
with open('/tmp/data', 'w') as f:
f.write(z)
Run Code Online (Sandbox Code Playgroud)
(或单行中壳:echo -n '...' | python2 -c 'import sys,zlib; sys.stdout.write(zlib.compress(sys.stdin.read()))' > /tmp/data)
现在,我想在 shell 中解压缩数据。既不工作zcat也不uncompress工作:
$ cat /tmp/data | gzip -d -
gzip: stdin: not in gzip format
$ zcat /tmp/data
gzip: /tmp/data.gz: not in gzip format
$ cat /tmp/data | uncompress -
gzip: stdin: not in gzip format
Run Code Online (Sandbox Code Playgroud)
似乎我创建了类似 gzip 的文件,但没有任何标题。不幸的是,我在 gzip 手册页中没有看到任何解压缩此类原始数据的选项,并且 zlib 包不包含任何可执行实用程序。 …
有没有办法在 tar.gz 存档中添加/更新文件?基本上,我有一个存档,其中包含一个文件,/data/data/com.myapp.backup/./files/settings.txt我想从存档中提取该文件(已完成),并在编辑完成后将其推回存档中。我怎样才能做到这一点?是否因为.在路径中而有问题?
在处理日志文件时,由于某些原因,有些最终会成为 gzipped 文件,logrotate而有些则不会。所以当你尝试这样的事情时:
$ zcat *
Run Code Online (Sandbox Code Playgroud)
你最终得到一个命令行zcat xyz.log xyz.log.1 xyz.log.2.gz xyz.log.3.gz,然后是:
gzip: xyz.log: not in gzip format
Run Code Online (Sandbox Code Playgroud)
是否有一种工具可以使用魔术字节,类似于file工作原理,并使用zcat或cat取决于结果,以便我可以将输出传输到grep例如?
注意:我知道我可以编写脚本,但我想知道是否已经有工具了。
我经常使用 wget 从 sourceforge.net 下载 tarball。
下载的文件然后被命名,例如 SQliteManager-1.2.4.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F&ts=1305711521&use_mirror=switch
当我尝试
tar xzf SQliteManager-1.2.4.tar.gz\?r\=http\:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F\&ts\=1305711521\&use_mirror\=switch
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
tar (child): Cannot connect to SQliteManager-1.2.4.tar.gz?r=http: resolve failed
gzip: stdin: unexpected end of file
tar: Child returned status 128
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
将文件重命名为foo.tar.gz提取工作完美后。
有没有办法让我不必在每次提取目标文件之前都被迫重命名?