Есть ли что-то для параллельного архивирования файлов?
Tar хорош, но я не использую ленточные архивы, и для меня более важно, чтобы архивирование происходило быстро (со сжатием, как bzip2), так как у меня есть smp.
performance
tar
archive
supercheetah
источник
источник
zip
только возможность справиться с каталогами: |tar
архивы, а затем сжимаем пакет с помощью файлового компрессора (напримерgzip
,pigz
и т. Д.). Вы можете сделать это в два шага, но также и в один шаг , так как они могут работать с потоками данных из стандартного ввода / вывода. Результаты очень похожиzip
, но более универсальны.Ответы:
Я думаю, что вы ищете pbzip2:
Загляните на домашнюю страницу проекта или проверьте ваш любимый репозиторий пакетов.
источник
pigz
иpxz
для параллельных реализацийgzip
иxz
. Вы можете сжать используя команду liketar c dir | pigz -c > dir.tar.gz
и распаковать используяpigz -cd dir.tar.gz | tar xf -
.tar -cf dir.tar.gz -I pigz dir
иtar -xf dir.tar.gz -I pigz
. Такжеxz
есть нарезка: используйтеXZ_OPT=-T0 tar -cJf dir.tar.gz dir
иXZ_OPT=-T0 tar -xJf dir.tar.gz
.7zip может работать в нескольких потоках, если ему присвоен
-mmt
флаг, но только при сжатии в 7z-архивы, которые предлагают отличное сжатие, но обычно медленнее, чем zip, для создания архивов. Сделайте что-то вроде этого:источник
ОП спрашивал о параллельном архивировании, а не о параллельном сжатии.
Если исходный материал поступает из файловой системы, где разные каталоги / файлы могут находиться на разных дисках, или даже на одном быстром диске, который превышает скорость ввода инструмента (ов) сжатия, тогда действительно может быть полезно иметь несколько входных потоков вдаваясь в слои сжатия.
Напрашивается важный вопрос: как выглядит выход из параллельного архива? Это больше не просто дескриптор файла /
stdout
, а дескриптор файла на поток.Примером этого до сих пор является режим параллельного дампа Postgresql
pg_dump
, в котором он создает дамп в каталог с потоками, работающими над набором таблиц для резервного копирования (рабочая очередь с несколькими потоками, потребляющими очередь).Я не уверен ни в каких реальных параллельных архиваторах, которые являются господствующими. Был взломан Solaris Tar для использования на ZFS: http://www.maier-komor.de/mtwrite.html
Есть несколько специальных инструментов резервного копирования, которые успешно запускают несколько потоков, но гораздо больше, которые просто распределяют нагрузку по каталогам на высоком уровне.
источник
заменить
pigz
на вашу любимую программу параллельного сжатия. Причина использованияtar
заключается в том, что он может хранить владельца, группу, разрешения. Эти метаданные часто полезны (например, восстановление дерева каталогов в сложной системе).источник
-I
параметром, который совпадает с параметром--use-compress-program
. Так, например,tar cvzf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...."
можно применить к многопоточному варианту, используяpigz
astar -I pigz -cvf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo..."
. Это самый лучший, самый подходящий ответ, ИМХО. Спасибо @uDude! :)pigz - это параллельная реализация gzip, но она может использовать только несколько процессоров для сжатия, а не для распаковки.
источник
pigz
самом деле, кажется, может использовать несколько потоков также при распаковке. Попробуйте сравнить выводtime tar xf dir.tar.gz
и oftime pigz -cd dir.tar.gz | tar xf -
(на моем 4-ядерном процессоре это занимает чуть меньше половины времени).time
в конвейере только время первой команды. Изpigz
документации : «Распаковка не может быть распараллелена, по крайней мере, без специально подготовленных потоков дефляции для этой цели. В результате pigz использует один поток (основной поток) для распаковки, но создаст три других потока для чтения, написание и проверка вычислений, которые могут ускорить декомпрессию при некоторых обстоятельствах. "tar
это просто формат архива, который очень хорош для точного дублирования файлов и сохранения дерева каталогов и исходных атрибутов файлов. TAR очень хорош для создания резервных копий, потому что все сохраняется. Я используюpbzip2
для сжатия архивов tar, которые я использую для резервного копирования системы с очень хорошими результатами.эта команда должна сделать свое дело.
pbzip2
может быть заменено другой утилитой сжатия, но имейте в виду, что сжатие LZMA (например, pxz) использует ОДНО ОЗУ при сжатии / распаковке больших файлов (я попытался запустить 8 потоков с 8 ГБ ОЗУ, и pxz начал подмену на диск).источник
Еще один соперник
lbzip2
. Это очень похоже на pbzip2источник
Что касается сжатия,
xz
так как в версии 5.2 поддерживается параллельное сжатие через-T
опцию.источник