重要说明:压缩不是目标,归档/录音(将所有文件打包到一个档案中)才是目标。
我想备份一个目录,其中包含数百个子目录和数百万个小文件 (< 800 KB)。当使用rsync将这些文件从一台机器复制到另一台远程机器时,我注意到传输速度非常低,只有大约 1 MB/秒,而当我复制大文件(例如 500 GB)时,传输速度在事实上大约 120 MB/秒。所以网络连接不是问题。
在这种情况下,仅移动 200 GB 这样的小文件就花了我大约 40 个小时。所以我想压缩包含这些文件的整个目录,然后将压缩的存档传输到远程机器,然后在远程机器上解压缩。我不希望这种方法能将 40 小时减少到 5 小时,但我怀疑它肯定会花费不到 40 小时。
我可以访问具有14 个 CPU 内核(56 个线程——Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz)和 128 GB RAM 的集群。因此,CPU/RAM 功率不是问题。
但是,从这么多文件中创建单个存档的最快和最有效的方法是什么?我目前只知道这些方法:
tar.gz方法7zippigz(并行 gzip - https://zlib.net/pigz/)但是,我不知道哪个更快,以及应该如何调整参数以达到最大速度?(例如,使用 7zip 的所有 CPU 内核还是仅使用一个内核更好?)
NB文件大小和压缩率根本不重要。我根本不想节省空间。我只是想从这么多文件中创建一个存档,以便传输速率为 120 MB/s 而不是 1 MB/s。
相关:如何使 7-Zip 更快