ВАЖНОЕ ПРИМЕЧАНИЕ: сжатие НЕ является целью, архивация / запись на пленку (упаковка всех файлов в один архив) является целью.
Я хочу сделать резервную копию одного каталога, который содержит сотни подкаталогов и миллионы небольших файлов (<800 КБ). При использовании rsync
для копирования этих файлов с одного компьютера на другой удаленный компьютер, я заметил, что скорость передачи очень низкая, всего около 1 МБ / с, тогда как при копировании огромных файлов (например, 500 ГБ) скорость передачи на самом деле около 120 МБ / с. Таким образом, сетевое соединение не является проблемой вообще.
В таком случае перемещение только 200 ГБ таких маленьких файлов заняло у меня около 40 часов. Поэтому я думаю о сжатии всего каталога, содержащего эти файлы, а затем о передаче сжатого архива на удаленную машину, после чего распаковываю его на удаленной машине. Я не ожидаю, что этот подход сократит 40 часов до 5 часов, но я подозреваю, что это определенно займет менее 40 часов.
У меня есть доступ к кластеру с 14 ядрами процессора (56 потоков - Intel (R) Xeon (R) Gold 5120 CPU @ 2,20 ГГц) и 128 ГБ оперативной памяти. Поэтому питание ЦП / ОЗУ не является проблемой.
Но какой самый быстрый и эффективный способ создать один архив из такого количества файлов? В настоящее время я знаю только об этих подходах:
- традиционный подход
tar.gz
7zip
pigz
(параллельный gzip - https://zlib.net/pigz/)
Тем не менее, я не знаю, что быстрее и как параметры должны быть настроены для достижения максимальной скорости? (например, лучше ли использовать все ядра процессора с 7zip или только одно?)
NB Размер файла и степень сжатия НЕ имеют значения вообще. Я не пытаюсь сэкономить место на всех. Я только пытаюсь создать один архив из такого количества файлов, чтобы скорость передачи составляла 120 МБ / с вместо 1 МБ / с.
СВЯЗАННЫЙ: Как сделать 7-Zip быстрее