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