直接压缩 stdout

直接压缩 stdout

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

我想一步完成此操作,而无需创建临时文件 files.txt...

例子:

cat file* > files.txt
tar -czf files.tar files.txt
rm files.txt

这可能吗?

答案1

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

压缩

gzip < file > file.gz

解压

gzip -d file.gz

或者等价地

gunzip file.gz

您还可以使用具有类似语法的bzip2xz压缩实用程序。xz通常会产生比gzip或更小的压缩文件bzip2

(脚注)

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

cat file | ssh -C user@remote 'cat >> remote_file'

或者

scp -C file user@remote:/path/on/remote

或者

rsync -avz file user@remote:/path/on/remote    

答案2

将 f 选项保留为关闭状态。

我做过的一些事是这样的:

tar -cz *.xml

这将打印到 stdout。然后我可以使用一些代码通过 ssh 进入服务器,将它们全部 tar/gzip 并保存在本地,而无需在服务器上创建新文件。

相关内容