【问题标题】:Compress files while reading data from STDIN从 STDIN 读取数据时压缩文件
【发布时间】:2010-12-18 00:17:02
【问题描述】:

在 Linux 上从标准输入读取数据时是否可以压缩(创建压缩存档)数据?

【问题讨论】:

  • 我投票结束这个问题,因为它属于 Unix 和 Linux

标签: linux stdin compression


【解决方案1】:

是的,为此使用 gzip。最好的方法是读取数据作为输入并将压缩后的文件重定向到输出文件,即

cat test.csv | gzip > test.csv.gz

cat test.csv 将数据作为标准输出发送,使用管道符号 gzip 将数据作为标准输入读取。确保将 gzip 输出重定向到某个文件,因为压缩数据不会写入终端。

【讨论】:

  • 请注意,test.csv.gz 文件的大小保持为 0,直到数据流关闭。
  • ... 如何做到这一点?这真的是一个单独的问题吗?
  • 这也适用于xzmysqldump mydb | xz > dbdump.sql.xz
  • 可以使用-9,默认压缩级别为-6
  • @MUY Belgium:不完全是,它仅在 16KB 压缩块后才开始写入。见here
【解决方案2】:

是的,gzip 会让你这样做。如果您只是运行gzip > foo.gz,它会将STDIN 压缩到文件foo.gz。您还可以将数据通过管道传输到其中,例如 some_command | gzip > foo.gz

【讨论】:

    【解决方案3】:

    gzip > stdin.gz 或许?否则,您需要充实您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-17
      • 2019-08-12
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多