Поскольку bzip2 утверждает, что сжимает лучше всего (по размеру), я решил использовать его. Работающий сервер может предлагать 24 (виртуальных) процессора (4 реальных X5650 при 2,67 ГГц) - и поэтому я решил искать параллельные варианты.
Используя debian stable
- извините, но я нашел лучшие совпадения здесь в Askubuntu - я решил поближе взглянуть на pbzip2
и lbzip2
.
Но что выбрать? В действительности стабильный pbzip2
находится в версии 1.1.1-1
и lbzip2
в версии 0.23-1
. Это может косметически стремиться к pbzip2
- но lbzip2
говорит, что это даже на одноядерных компьютерах быстрее. С другой стороны pbzip2
утверждает, что он полностью совместим с bzip2 v1.0.2
.
Кроме того, у меня есть некоторые временные значения большой локальной работы:
Использование lbzip2
Command being timed: "tar -cjf /tmp/mapleTAsicherung.lbzip2.tar /bin /etc /lib /lib32 /opt /sbin /selinux /usr"
User time (seconds): 2134.32
System time (seconds): 39.24
Percent of CPU this job got: 2099%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:43.51
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1509088
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 1054467
Voluntary context switches: 153901
Involuntary context switches: 235285
Swaps: 0
File system inputs: 0
File system outputs: 3460632
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Использование pbzip2
Command being timed: "tar -cjf /tmp/mapleTAsicherung.pbzip2.tar /bin /etc /lib /lib32 /opt /sbin /selinux /usr"
User time (seconds): 3158.18
System time (seconds): 59.80
Percent of CPU this job got: 2095%
Elapsed (wall clock) time (h:mm:ss or m:ss): 2:33.56
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1436320
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 477683
Voluntary context switches: 151326
Involuntary context switches: 339246
Swaps: 0
File system inputs: 0
File system outputs: 3460536
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Что следует использовать? Каковы основные различия? На данный момент я склоняюсь к lbzip2
.
Вот основная идея, как оценить их.
Возьмите большой tarball вида, с которым Вы обычно работаете. Сожмите его с bzip2, pbzip2, lbzip2. Измерьте (настенные часы) времена и сохраните все выводы в различных файлах. Это даст Вам три раза и трем размерам файла.
Затем выполните итерации по всем трем выходным файлам (т.е. выводы сжатия bzip2, pbzip2, lbzip2), и распакуйте каждого со всеми тремя утилитами (bzip2, pbzip2, и lbzip2). Это даст Вам далее девять раз.
Повторно выполните двенадцать тестов при некотором профилировщике и получите пиковое использование памяти (виртуальный и RSS) для каждого. Снова, это приведет к 12 значениям. (Если Ваш Linux настроен к, не принимают на себя непосильные обязательства, то Вы интересуетесь VSZ. Иначе Вы заботитесь о RSS).
Сделайте таблицу с 12 строками для этих точек данных - col1: 3 сжатых размера, col2: 3 раза сжатия / 9 раз распаковки, col3: 12 пиковых мемов - и выбирают то, что подходит Вам лучше всего. Необходимо включить в то, как часто Вы сжимаетесь по сравнению с тем, как часто Вы распаковываете.
Я использую lbzip2-0.23, но я записал это, таким образом, это не рассчитывает.
Наконец, неважно, какой оказывается лучшим для Вас, всегда сохраняйте контрольную сумму несжатого tarball, плюс проверяют Ваш сохраненный файл прежде, чем объявить "сделанное" резервное копирование.
FILES=...
OUTDIR=/mnt/archive
BZ2_UTIL=...
(
tar -c -- $FILES \
| tee >(sha256sum >"$OUTDIR"/myfiles.tar.sha256) \
| pv -c -N plain 2>/dev/tty \
| "$BZ2_UTIL" \
| pv -c -N compr 2>/dev/tty \
> "$OUTDIR"/myfiles.tar.bz2
) 2>"$OUTDIR"/myfiles.err
"$BZ2_UTIL" -dc -- "$OUTDIR"/myfiles.tar.bz2 \
| sha256sum -c -- "$OUTDIR"/myfiles.tar.sha256
Я сделал несколько сравнительных тестов для bzip2 против pbzip2 и lbzip2 вместе с lzip и plzip на http://vbtechsupport.com/1614/ . Мне нравятся улучшения скорости для lbzip2, если у вас достаточно памяти.