Существует ли параллельный файл archiver (как tar)?

Нет никакого различия.

Несколько наклонных черт проигнорированы (без эффекта), например:

ls -al //usr///////bin/sed
42
11.10.2010, 15:58
8 ответов

Я думаю, что Вы ищете pbzip2:

PBZIP2 является параллельной реализацией bzip2 компрессора файла блочной сортировки, который использует pthreads и достигает почти линейного ускорения на машинах SMP.

Взгляните на домашнюю страницу проекта или проверьте свое любимое хранилище пакетов.

36
27.01.2020, 19:35
  • 1
    Можно также попробовать pigz и pxz для параллельных реализаций gzip и xz. Можно сжать использование команды как tar c dir | pigz -c > dir.tar.gz и использование распаковки pigz -cd dir.tar.gz | tar xf -. –  gerlos 29.10.2015, 21:31
  • 2
    Команды сегодня были бы 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. –  Rich 25.08.2017, 19:53

7zip может работать на нескольких потоках при предоставлении -mmt флаг, но только при сжатии в 7z-архивы, которые предлагают большое сжатие, но обычно медленнее, чем zip для создания архивов. Сделайте что-то вроде этого:

7z a -mmt foo.7z /opt/myhugefile.dat
21
27.01.2020, 19:35
  • 1
    7z является хорошим archiver, с хорошей поддержкой управления компромиссами между степенью сжатия и comp/decomp время, произвольный доступ по сравнению с лучшим сжатием и материал как этот. Однако это не хранит почти столько же метаданных сколько tar, Вы теряете владельца/полномочия. –  Peter Cordes 23.08.2015, 01:49
  • 2
    Это похоже на это, опции идут по умолчанию - по крайней мере, у меня нет увеличения производительности с ним, и 7z' вывод имеет строку о сумме ядер моего ЦП в обоих случаях. человек –  Andrey Starodubtsev 29.10.2015, 18:01

pigz является параллельной реализацией gzip, но может только действительно использовать несколько процессоров для сжатия, не распаковки.

10
27.01.2020, 19:35
  • 1
    Сделал некоторые эксперименты, и pigz на самом деле, кажется, может использовать несколько потоков также при распаковке. Попытайтесь сравнить вывод time tar xf dir.tar.gz и time pigz -cd dir.tar.gz | tar xf - (на моем 4 ядрах процессора это берет немного меньше чем половину времени). –  gerlos 29.10.2015, 21:21
  • 2
    @gerlos Используя time на конвейере будет только время первая команда. От pigz документация: "Распаковка не может быть параллелизирована, по крайней мере, не без специально подготовленного выкачивают потоки с этой целью. В результате pigz использует единственный поток (основной поток) для распаковки, но создаст три других потока для чтения, записи, и проверит вычисление, которое может ускорить распаковку при некоторых обстоятельствах". –  augurar 31.08.2016, 21:59
  • 3
    Существует также pixz. –  Marc.2377 22.06.2017, 06:22

tar просто формат архива, который очень хорош в точном дублировании файлов и сохранении дерева каталогов и исходных атрибутов файла. TAR очень хорош для того, чтобы сделать резервные копии, потому что все сохраняется. Я использую pbzip2 сжимать tar архивирует, я использую для системных резервных копий с очень хорошими результатами.

эта команда должна добиться цели.

tar -cpS "infile" | pbzip2 > "outfile"

pbzip2 может быть заменен другой утилитой сжатия, но предупрежден, сжатие LZMA (как pxz) использует ТОННУ RAM при сжатии/распаковке больших файлов (я пытался выполнить 8 потоков с 8 ГБ RAM, и pxz начал подкачивать к диску).

8
27.01.2020, 19:35
[116507] Другой претендент -

lbzip2

. Это довольно похоже на pbzip2[116508].
4
27.01.2020, 19:35

Интерпретация & интерпретируется оболочкой, в которой вы должны использовать кавычки (') вокруг URL:

curl --data-binary @/opt/somefile.xml 'http://1.2.3.4/gateway/submit?source=FOO&conversationid=1234567'
12
27.01.2020, 19:35

ОП спрашивает о параллельном архивировании, а не о параллельном сжатии.

Если исходный материал поступает из файловой системы, в которой разные каталоги / файлы могут находиться на разных дисках, или даже на одном быстром диске, который превышает скорость ввода инструмента (ов) сжатия, тогда действительно может быть полезно иметь несколько потоки ввода, идущие в слои сжатия.

Возникает важный вопрос: как выглядит вывод из параллельного архива? Это уже не просто дескриптор файла / stdout , а дескриптор файла для каждого потока.

Примером этого до сих пор является режим параллельного дампа Postgresql pg_dump , в котором он производит дамп в каталог, с потоками, работающими над набором таблиц для резервного копирования (рабочая очередь с несколькими потоками, потребляющими очередь).

Я не уверен ни в каких реальных параллельных архиваторах, которые широко распространены. Для использования в ZFS Solaris Tar был предложен хак: http://www.maier-komor.de/mtwrite.html

Есть несколько специальных инструментов резервного копирования, которые успешно запускают несколько потоков, но гораздо больше, чем просто разделите рабочую нагрузку по каталогам на высоком уровне.

15
27.01.2020, 19:35

Что касается сжатия, то xzпримерно с версии 5.2 поддерживает параллельное сжатие с помощью опции -T.

4
27.01.2020, 19:35

Теги

Похожие вопросы