我尝试执行以下操作:
- 将文件夹(比如Pictures)上传到服务器
- 让服务器压缩输入流并保存到文件
重要的是,步骤 1) 应该是未压缩的,因为连接速度非常快,我认为客户端的压缩会更慢。此外,服务器没有足够的空间来存储未经压缩的目录。理想情况下,服务器上的压缩同时发生。
只要它是多线程的,我就不太关心实际的压缩算法。
我尝试执行以下操作:
重要的是,步骤 1) 应该是未压缩的,因为连接速度非常快,我认为客户端的压缩会更慢。此外,服务器没有足够的空间来存储未经压缩的目录。理想情况下,服务器上的压缩同时发生。
只要它是多线程的,我就不太关心实际的压缩算法。
初步说明:假设您的图片已经压缩(JPEG,PNG,WEBP,...),无论您使用什么压缩,都没有太多可以做的,空间方面的。根本没有熵可以减少了。所以,你的整个计划在这里可能会失败。
一种常用的方法是使用Tape ARchive格式 (.tar)。您可以将目录序列化为单个 TAR 流,通过 Internet 将其通过管道传输(例如使用 SSH)并在目标上压缩它。
您还想关闭 SSH 的内置传输压缩,否则一开始就在发送主机上不压缩是没有意义的。
就像是
替换
zstd -T0
(使用尽可能多的 CPU 内核,用于 zstandard 压缩;这-15
是压缩级别;15 相当残酷,-3
比 gzip 更好,但通常更快)为xz -T0
(用于并行 XZip 压缩)或pigz
(用于并行 gzip 压缩)为你觉得合适。我推荐 zstd,它具有非常好的压缩比/速度折衷;xz
速度很慢,而且 gzip 只能产生非常有限的压缩,并且在相对较低的压缩设置下并不比 zstd 快。但是请注意,数据加密可能需要比压缩更多的 CPU,所以问题是为什么你不只是
您可以使用压缩文件系统来完成。
例如,查看 Btrfs 或 ZFS - 只需将卷定义为在主机上压缩即可满足您的要求。