Я использую tar
для резервного копирования Linux-сервера на ленту. Я использую -j
возможность сжать файл с помощью bzip2
, однако я не вижу способа изменить параметры размера блока для bzip2 из tar. Размер блока по умолчанию составляет 900 000 байт, что дает наилучшее сжатие, но является самым медленным. Меня не особо беспокоит степень сжатия, поэтому я хочу, чтобы bzip2 работал быстрее с меньшим размером блока.
export BZIP=--fast
tar cjf foo.tar.bz2 foo
Или направьте вывод tar
к bzip2
.
Хотя вы должны отметить из справочной страницы bzip2:
-1 (or --fast) to -9 (or --best) Set the block size to 100 k, 200 k .. 900 k when compressing. Has no effect when decompressing. See MEMORY MANAGEMENT below. The --fast and --best aliases are primarily for GNU gzip compat- ibility. In particular, --fast doesn't make things signifi- cantly faster. And --best merely selects the default behaviour.
tar -cjf dir.tar.bz2 --options bzip2:compression-level=9 path/to/dir/
bzip2
размеры блокаbzip2
имеет несколько вариантов размера блока. Со страницы руководства bzip2(1)
:
-1 (or --fast) to -9 (or --best)
Set the block size to 100 k, 200 k .. 900 k when compressing.
Has no effect when decompressing. See MEMORY MANAGEMENT below.
The --fast and --best aliases are primarily for GNU gzip
compatibility. In particular, --fast doesn't make things
significantly faster. And --best merely selects the default
behaviour.
Поскольку вы хотите более быстрое сжатие с меньшим учетом степени сжатия, используйте bzip2
, кажется, ты хочешь -1
(или --fast
) вариант.
bzip2
размер блока при использовании tar
Вы можете установить bzip2
размер блока при использовании tar
несколькими способами.
Мой любимый способ, способ UNIX, - это тот, где вы используете каждый инструмент независимо и комбинируете их через каналы.
$ tar --create [FILE...] | bzip2 -1 > [ARCHIVE].tar.bz2
Вы можете прочитать это как «создать .tar с tar
-> bzip с помощью bzip2
-> напишите это [ARCHIVE].tar.bz2
".
Также можно установить bzip2
параметры через переменную среды BZIP2
. Со страницы руководства bzip2(1)
:
bzip2 will read arguments from the environment variables BZIP2 and BZIP,
in that order, and will process them before any arguments read from the
command line. This gives a convenient way to supply default arguments.
Итак, чтобы использовать это с tar
, вы могли бы, например, сделать:
$ BZIP2=-1 tar --create --bzip2 --file [ARCHIVE].tar.bz2 [FILE...]
bzip2
использует алгоритм медленного сжатия. Если вас беспокоит скорость, вы можете изучить альтернативные алгоритмы, например, используемые gzip
или lzop
. Вот хорошая статья, сравнивающая инструменты сжатия: https://aliver.wordpress.com/2010/06/22/huge-unix-file-compresser-shootout-with-tons-of-datagraphs/
Отправить tar
вывод на stdout
а затем пропустите его через bzip2
по отдельности:
% tar cvf - _file_ | bzip2 _opts_ > output.tar.bz2
Еще проще:
% tar -cvf dir.tar path/to/dir/ && bzip2 -9 dir.tar