我在询问一个将一个大文件复制到远程服务器的场景。
最简单的例子是:
tar c myfile | ssh myserver tar x如果网络连接速度快,那么一切都很好。
在一个速度较慢的网络上
tar c myfile | bzip2 -1 | ssh myserver tar xj-以CPU时间为代价,使我的传输速度更快。
当然,我可以使用压缩比,通常尝试猜测正确的压缩比,这样我的CPU就不会太忙,网络也饱和了。
是否有压缩实用程序或压缩标志可以告诉bzip2/xz/.在输出缓冲区繁忙时尽可能压缩吗?
发布于 2019-06-07 08:53:34
zstd --adaptzstd压缩效用有一个打开自适应压缩的选项(该选项是在zstd v1.3.6中添加的)。这将调整压缩到“当前感知的I/O条件”。
有关更多信息,请参见zstd手册。
完整的管道可能如下所示:
tar -c -f - source_directory |
zstd --adapt |
ssh user@server 'cd /someplace && { zstd -d | tar -x -f -;}'或
tar -c -f - source_directory |
zstd --adapt |
ssh user@server 'zstd -d | tar -x -C /someplace -f -'如果将-v添加到管道中的第一个zstd中,您将得到一个进度指示符行,其内容如下
(L7) Buffered : 32 MB - Consumed : 192 MB - Compressed : 72 MB => 37.50%其中,(L7)指示压缩级别。对于任何中等数量的数据,您都会期望它会随着时间的推移而波动,这表明zstd确实适应了I/O条件(大概也适应了数据本身)。
https://unix.stackexchange.com/questions/523491
复制相似问题