tar를 사용할 때 bzip2 블록 크기를 어떻게 설정합니까?


9

tar리눅스 서버를 테이프에 백업하는 데 사용 하고 있습니다. -j파일을 압축 하는 옵션을 사용하고 bzip2있지만 tar에서 bzip2의 블록 크기 옵션을 조정하는 방법을 볼 수 없습니다. 기본 블록 크기는 900,000 바이트이며 최상의 압축을 제공하지만 가장 느립니다. 압축 비율에 대해 신경 쓰지 않았으므로 더 작은 블록 크기로 bzip2를 더 빨리 실행하려고합니다.


1
사이드 노트 : 최근에 bzip2를 포기했습니다. 나는 lzma를 사용합니다 (lzma, lzma-utils 또는 lzma-sdk 패키지에서 이름은 배포판에 따라 다릅니다.) 일반적으로 동일한 CPU 시간이 주어지면 bzip2와 동일하거나 더 잘 압축됩니다. 압축에 관해서는 단순히 bzip2를 날립니다. 떨어져.
Mihai Limbăşan

답변:


9
export BZIP=--fast
tar cjf foo.tar.bz2 foo

또는의 출력을 tar로 파이프하십시오 bzip2.

bzip2 매뉴얼 페이지에서 참고해야하지만 :

    -1 (또는 --fast) ~ -9 (또는 --best)
              압축시 블록 크기를 100k, 200k..900k로 설정하십시오.
              압축을 풀 때 효과가 없습니다. 아래의 메모리 관리를 참조하십시오.
              --fast 및 --best 별칭은 주로 GNU gzip compat-
              가능성. 특히 --fast는 의미가 없습니다.
              더 빨리. --best는 단순히 기본 동작을 선택합니다.

export BZIP = -9를 사용하는 대안
Pol Hallen

4
tar -cjf dir.tar.bz2 --options bzip2:compression-level=9 path/to/dir/

내 시스템 (OSX El Capitan bsdtar 2.8.3)에서는 man 페이지에서 누락되었지만 gzip : compression-level 및 xz : compression-level이 나열되어 있지만 테스트해도 옵션이 작동합니다.
steveayre

tar: unrecognized option '--options'
ZN13

2

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.

UNlX 방식

내가 가장 좋아하는 방법 인 UNlX 방식은 모든 도구를 독립적으로 사용하고 파이프를 통해 결합하는 방식입니다.

$ 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/


여기에 좋은 답변을 제공 할 지식이있는 것 같지만 좋은 답변을 작성하려면 어떻게합니까?를 읽어보십시오 . 도움말 센터에서 답변을 수정하십시오. 귀하의 명령 / 코드 / 설정은 기술적으로 해결책 일 수 있지만 일부 설명은 환영합니다. 미리 감사드립니다.
HBruijn

1

보내기 tar로 출력 stdout을 한 다음 파이프를 bzip2별도로 :

% tar cvf - _file_ | bzip2 _opts_ > output.tar.bz2

0

훨씬 쉽다 :

% tar -cvf dir.tar path/to/dir/ && bzip2 -9 dir.tar

3
임시 파일을 사용하면 충분한 하드 디스크 공간과 tar가 쓸 수있는 대역폭과 bzip2가 읽을 수있는 대역폭이 필요합니다. 소량의 데이터에는 사소한 것처럼 보일 수 있지만 문제의 디렉토리에 수백 기가 바이트가 있으면 실제 문제가 될 수 있습니다.
Ansgar Esztermann

예, 고마워요 나는 깊은 이유 배운 알고 tar있다 -z-j. 이 옵션은 나에게 다소 편리한 것처럼 보였다. 그러나 그들은 하루를 구할 수 있습니다.
안드레아스 스핀들러
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.