有人能告诉我是否可以直接压缩标准输出吗?
我想一步完成此操作,而无需创建临时文件 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
您还可以使用具有类似语法的bzip2
和xz
压缩实用程序。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 并保存在本地,而无需在服务器上创建新文件。