압축된 파일 아카이브를 생성하고 여기에서 개별 파일/디렉터리를 빠르게 추출할 수 있어야 합니다.
문제는 예를 들어 tar.bz2가 이런 종류의 작업에 가장 적합한 선택이 아닌 것 같다는 것입니다. 200Mb 아카이브(50000개 파일)에서 단일 4kb 파일을 추출하는 데 내 컴퓨터에서 17초가 걸립니다.
아카이브에서 단일 파일을 빠르게 내보낼 수 있는(Linux에서 작동하는) 아카이브 형식이 있습니까?
답변1
픽셀xz의 병렬 인덱스 버전입니다.
# Compress:
tar -I pixz -cf foo.tar.xz ./foo
# Decompress:
tar -I pixz -xf foo.tar.xz
# Very quickly list the contents of the compressed tarball:
pixz -l foo.tar.xz
# Very quickly extract a single file:
pixz -x dir/file < foo.tar.xz | tar x
답변2
Zip 형식은 각 파일을 개별적으로 압축한 다음 이를 아카이브 콘텐츠 디렉터리와 함께 단일 아카이브 파일로 결합합니다.
답변3
이미 언급한 zip 형식 외에도 dar
및 dump
유틸리티도 이 문제를 잘 처리하며 zip과 달리 Unix 권한을 유지합니다. dar
전체 파일을 한 번에 압축하는 tar/gzip 방법으로 대체되므로 고정 아카이브 옵션을 사용하지 않기를 원하기 때문에 더 나은 압축을 제공하지만 필요한 경우까지 전체 파일의 압축을 풀어야 하므로 개별 파일을 추출하는 시간이 더 길어집니다 . 파일이 발견되었습니다. dump
많은 수의 작은 파일(수만 개)에 잘 작동하고 다중 스레드 압축을 수행할 수 있지만 ext[234] 파일 시스템만 읽을 수 있습니다.
답변4
.tar.gz
압축 해제 속도는 더 빠르지만 압축 크기는 최악입니다. 편집자: Ignacio Vazquez-Abrams가 나를 닌자했습니다.