直接压缩标准输出

Wol*_*lfy 1 command-line tar stdout

有人能告诉我是否可以直接压缩标准输出?

我想在不创建临时文件 files.txt 的情况下一步完成此操作...

例子:

cat file* > files.txt
tar -czf files.tar files.txt
rm files.txt
Run Code Online (Sandbox Code Playgroud)

这可能吗?

chr*_*tis 5

在这种情况下,您可以绕过 的tar部分.tar.gz,因为您不需要处理多个文件,直接跳到gzip进行压缩。

压缩

gzip < file > file.gz
Run Code Online (Sandbox Code Playgroud)

解压

gzip -d file.gz
Run Code Online (Sandbox Code Playgroud)

或等效地

gunzip file.gz
Run Code Online (Sandbox Code Playgroud)

您还可以使用具有类似语法的bzip2xz压缩实用程序。xz通常生成的压缩文件比gzipbzip2.

(脚注)

如果您正在创建一个压缩文件,然后使用scp它来传输它,您可以使用内置压缩:

cat file | ssh -C user@remote 'cat >> remote_file'
Run Code Online (Sandbox Code Playgroud)

或者

scp -C file user@remote:/path/on/remote
Run Code Online (Sandbox Code Playgroud)

或者

rsync -avz file user@remote:/path/on/remote    
Run Code Online (Sandbox Code Playgroud)