파일이나 디렉토리의 gzip 압축을 수행할 때 1 코어 밖에 사용하지 않기 때문에 압축시간이 오래 걸린다.
8 코어 CPU를 활용하여 병렬에서 gzip 압축을 하고 싶다.
이런 상황에서 쓸 수 있는 좋은 방법을 소개합니다.
최근 대용량의 파일(수백기가~ 수십 테라)을 다루는 일이 많습니다..
1. pbzip2 설치
sudo apt-getinstall pbzip2
2. 멀티 코어 압축방법
- c : 압축
- z : tar 압축후 gzip압축
- v : verbose 압축과정을 출력
- p : 소유권등 퍼미션을 그대로 유지
- f : 내가 지정한 파일명으로 압축
#압축
tar --use-compress-prog=pbzip2 -czvpf <압축 파일 이름> <압축할 폴더 또는 파일> tar --use-compress-prog=pbzip2 -czvpf data.tar.bz2 data
# 위에 방법으로 안되면
tar --use-compress-prog=pbzip2 -czvpf <./압축 파일 이름> <./압축할 폴더 또는 파일>
tar --use-compress-prog=pbzip2 -czvpf ./data.tar.bz2 ./data
3. 멀티 코어 압축풀기 방법
압축풀기
tar --use-compress-prog=pbzip2 -xzvpf <압축 파일 이름> <압축할 파일>
pbzip2 는 pthread를 사용하고 SMP 시스템에서 거의 선형에 가까운 속도 향상을 달성하는 bzip2 블록 정렬 파일 압축기의 병렬 구현입니다. 이 버전의 출력은 bzip2 v1.0.2 이상과 완전히 호환됩니다(즉, pbzip2 로 압축된 모든 항목은 bzip2로 압축 해제할 수 있음).
pbzip2 는 pthreads 호환 C++ 컴파일러(예: gcc)가 있는 모든 시스템에서 작동해야 합니다. Linux, Windows(cygwin), Solaris, Tru64/OSF1, HP-UX 및 Irix에서 테스트되었습니다.
pbzip2 의 기본 설정 은 대부분의 경우 잘 작동합니다. 사용해야 할 유일한 스위치는 -d로 파일 압축을 풀고 -p가 시스템에서 자동 감지가 지원되지 않거나 특정 CPU 수를 사용하려는 경우 사용할 pbzip2 의 프로세서 수를 설정하는 것 입니다.
옵션
- -b#
- 여기서 #은 100k 단계의 블록 크기입니다(기본값 9 = 900k).
- -c, --stdout
- 표준 출력(stdout)으로 출력
- -d,--decompress
- 파일 압축 해제
- -f,--force
- 강제, 기존 출력 파일 덮어쓰기
- -h,--help
- 이 도움말 메시지 인쇄
- -k,--keep
- 입력 파일 유지, 삭제하지 않음
- -l,--loadavg
- 로드 평균은 사용할 최대 프로세서 수를 결정합니다.
- -m#
- 여기서 #은 1MB 단위의 최대 메모리 사용량입니다(기본값 100 = 100MB).
- -p#
- 여기서 #은 프로세서 수입니다(기본값: autodetect).
- -q,--quiet
- 저소음 모드(기본값)
- -r,--read
- 전체 입력 파일을 RAM으로 읽고 프로세서 간에 분할
- -S#
- 1KB 단위의 하위 스레드 스택 크기(지정되지 않은 경우 기본 스택 크기)
- -t,--test
- 압축 파일 무결성 테스트
- -v,--verbose
- 상세 모드
- -V
- pbzip2의 버전 정보를 표시 한 다음 종료
- -z,--compress
- 파일 압축(기본값)
- -1,--fast ... -9,--best
- BWT 블록 크기를 100k .. 900k(기본값 900k)로 설정합니다.
- --ignore-trailing-garbage=#
- 후행 가비지 플래그 무시(1 - 무시, 0 - 금지)
파일 이름이 지정되지 않은 경우 pbzip2는 표준 입력에서 표준 출력으로 압축하거나 압축을 해제합니다.
파일 크기
pbzip2를 사용 하여 4GB보다 큰 파일을 압축할 수 있어야 합니다 .
pbzip2 로 압축된 파일은 조각으로 분할되고 각 개별 조각이 압축됩니다. 이것은 조각을 동시에 압축할 수 있기 때문에 pbzip2 가 여러 CPU에서 더 빠르게 실행되는 방법 입니다. 최종 .bz2 파일은 이 파일 분할로 인해 일반 bzip2 프로그램으로 압축한 경우보다 약간 클 수 있습니다(보통 0.2% 미만). pbzip2 로 압축된 파일 도 pbzip2 를 사용하여 압축을 풀 때 속도가 상당히 향상됩니다 .
bzip2를 사용하여 압축된 파일은 bzip2가 프로세서 간에 분할할 수 없는 단일 청크로 데이터를 패키징하기 때문에 속도가 향상되지 않습니다.
예
예 1:
pbzip2 myfile.tar
이 예는 "myfile.tar" 파일을 압축 파일 "myfile.tar.bz2"로 압축합니다. 기본 파일 블록 크기가 900k이고 기본 BWT 블록 크기가 900k인 자동 감지된 프로세서 수(또는 자동 감지가 지원되지 않는 경우 2개 프로세서)를 사용합니다.
예 2:
pbzip2 -b15k myfile.tar
이 예는 "myfile.tar" 파일을 압축 파일 "myfile.tar.bz2"로 압축합니다. 파일 블록 크기가 1500k이고 BWT 블록 크기가 900k인 자동 감지된 프로세서 수(또는 자동 감지가 지원되지 않는 경우 2개의 프로세서)를 사용합니다. 압축이 완료된 후에도 "myfile.tar" 파일은 삭제되지 않습니다.
예 3:
pbzip2 -p4 -r -5 myfile.tar second*.txt
이 예는 "myfile.tar" 파일을 압축 파일 "myfile.tar.bz2"로 압축합니다. BWT 블록 크기가 500k인 프로세서 4개를 사용합니다. 파일 블록 크기는 "myfile.tar" 크기를 4(프로세서 수)로 나눈 값이 되므로 각 프로세서 간에 데이터가 고르게 분할됩니다. 이를 위해서는 pbzip2가 압축을 위해 전체 파일을 메모리로 읽을 수 있는 충분한 RAM이 필요합니다. 그런 다음 Pbzip2는 동일한 옵션을 사용하여 해당 디렉터리에서 와일드카드 "second*.txt"와 일치하는 다른 모든 파일을 압축합니다.
예 4
tar cf myfile.tar.bz2 --use-compress-prog=pbzip2 dir_to_compress/
tar -c directory_to_compress/ | pbzip2 -c > myfile.tar.bz2
이 예제는 TAR에서 파이프를 통해 pbzip2에 제공되는 데이터를 압축 파일 "myfile.tar.bz2"로 압축합니다. 기본 파일 블록 크기가 900k이고 기본 BWT 블록 크기가 900k인 자동 감지된 프로세서 수(또는 자동 감지가 지원되지 않는 경우 2개 프로세서)를 사용합니다. TAR은 "directory_to_compress/" 디렉토리에서 모든 파일을 수집하고 작동할 때 데이터를 pbzip2에 전달합니다.
예 5:
pbzip2 -d -m500 myfile.tar.bz2
이 예는 "myfile.tar.bz2" 파일을 압축 해제된 파일 "myfile.tar"로 압축 해제합니다. 자동 감지된 프로세서 수(또는 자동 감지가 지원되지 않는 경우 프로세서 2개)를 사용합니다. 압축 해제를 위해 최대 500MB의 메모리를 사용합니다. -b, -r 및 -1..-9 스위치는 압축 해제에 유효하지 않습니다.
예 6:
pbzip2 -dc myfile.tar.bz2 | tar x
이 예제는 압축 해제 pbzip2의 출력을 tar로 파이핑하는 "myfile.tar.bz2" 파일의 압축을 풀고 압축을 풉니다.
예 7:
pbzip2 -c myfile.txt.bz2
이 예제는 표준 입력에서 myfile.txt를 읽어서 myfile.txt.bz2로 리디렉션되는 표준 출력으로 압축합니다.
번호 | 분류 | 제목 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 유머 | 🚨(뉴비필독) 전체공지 & 포인트안내 12 | 2024.11.04 | 26964 |
공지 | 이슈 | URL만 붙여넣으면 끝! 임베드 기능 | 2025.01.21 | 21280 |
380192 | 의류 |
네이버 1+1 강아지옷 메쉬 농구옷 50%할인한다 5500원 무배
1 ![]() ![]() |
2025.06.24 | 95 |
380191 | 잡담 |
전체적인 여드름관리
1 ![]() |
2025.06.24 | 100 |
380190 | 의류 |
[네이버] 1+1 드라이 기능성 긴바지 20,000원 배송비 3,000원
![]() ![]() |
2025.06.24 | 114 |
380189 | 생활용품 |
시크릿데이 입는 오버나이트 무료이벤트
![]() ![]() |
2025.06.24 | 117 |
380188 |
이제 저녁시간인데
![]() |
2025.06.24 | 108 | |
380187 |
영어나 외국어를 교재와 MP3파일로 공부할 때 어플과 AI도구를 이용해 공부 효율을 올리는 꿀 팁
![]() ![]() |
2025.06.24 | 119 | |
380186 |
CU편의점 택배 보낼일 있으면 참고해!
1 ![]() |
2025.06.24 | 157 | |
380185 | 기사/뉴스 |
"와 천잰데?" 놀라운 기술…'댓글 부대' 싹 잡아낸다
3 ![]() ![]() |
2025.06.24 | 132 |
380184 | 유머 |
썸남이 연애 못 해본 거 티난다는 안전벨트 해주는 방법
![]() ![]() |
2025.06.24 | 126 |
380183 |
오늘 비오는거 맞아??
1 ![]() |
2025.06.24 | 128 | |
380182 | 그 외 |
이브원더즈 암튜브 성인용 팔튜브 암링 남성, 2개 7,440원/무배
![]() |
2025.06.24 | 1757 |
380181 | 잡담 | 얼굴 작아지는 법 뭐가있을까 | 2025.06.24 | 125 |
380180 | 먹거리 |
홈플러스 이번주 특가 행사 전단지 (6.26~7.2)
![]() |
2025.06.24 | 188 |
380179 | 기사/뉴스 |
올데이 프로젝트, 데뷔와 동시에 멜론 '톱100' 직행 '돌풍'
![]() |
2025.06.24 | 154 |
380178 | 화장품 |
토니모리 겟잇틴트 버터틴트 4,800원!
![]() |
2025.06.24 | 288 |
380177 | 이용권/상품권 |
쿠팡이츠 랜덤 쿠폰 1천원~최대 5만원 100% 당첨 (선착순)
1 ![]() |
2025.06.24 | 172 |
380176 | 먹거리 |
[네이버] L아르기닌 6000 고함량 15포*3개 (27,900원/무료)
![]() |
2025.06.24 | 161 |
380175 | 기사/뉴스 |
헌법 강의하다 "문재인은 간첩"‥"강의의 자유"
1 ![]() |
2025.06.24 | 163 |
380174 | 날씨 왜이래 1 | 2025.06.24 | 134 | |
380173 | 제습기 가동 2 | 2025.06.24 | 154 | |
380172 | 제습기 필요성 2 | 2025.06.24 | 148 | |
380171 | 유머 |
인스타 릴스 알고리즘 뜬 트리플에스 소속사 남돌.jpg
![]() |
2025.06.24 | 167 |
380170 | 유머 |
이병헌 때문에 이민정이랑 단 둘이 남게 된 김우빈.jpg
![]() |
2025.06.24 | 185 |
380169 |
방송대커뮤니티 홍보용 - geminin
![]() ![]() |
2025.06.24 | 187 | |
380168 |
방송대 학과 게시판 주소
![]() |
2025.06.24 | 194 | |
380167 | 먹거리 |
롯데온 세븐일레븐 아이스 아메리카노 레귤러 450원
![]() |
2025.06.24 | 215 |
380166 | 기사/뉴스 |
누군가를 사랑하는 사람을 보면 그 사람을 잘 알 수 있다. 인생에서 중요한 과제는 과거의 나를 용서하고 받아들이는 것이다.
![]() |
2025.06.24 | 204 |
380165 | 유머 |
요즘 현대인들이 가장 많이 고민하는 부분? 시간, 돈, 나이에 얽혀 사는 한국인들의 문제점
![]() |
2025.06.24 | 192 |
380164 | 맛잇는 냄새 | 2025.06.24 | 190 | |
380163 | 다들 점심 뭐 먹어? | 2025.06.24 | 193 |