나는해야한다특정 폴더 추출.tar.bz2
(34G) 에서 . 문제는 1시간이 걸린다는 것. 압축 때문인 것 같아요. 특정 폴더를 압축하지 않은 상태로 추출하는 것이 더 빠를 것 같습니다.
.tar
그럼 에서 오는 것이 가능한가요 .tar.bz2
?
답변1
특정 폴더의 관련 부분을 압축 해제할 수 있는지 여부에 대한 질문이 있는 경우, bzip2는 압축된 데이터를 색인화하지 않습니다. 즉, 이전 콘텐츠를 처리하지 않고는 압축 해제된 데이터의 특정 바이트로 직접 이동할 수 있는 방법이 없습니다. tar
중앙 인덱스가 없는 순차 형식이기도 합니다.
그러나 한 번 압축을 풀고 단일 폴더를 여러 번 추출하여 작업을 미리 상각할 수 있는지 여부에 대한 질문이 있는 경우 예, 다음 명령을 사용할 수 있습니다 bzip2
.
bzip2 -d foo.tar.bz2
그러면 foo.tar
.
답변2
특정 폴더를 압축하지 않고 추출하는 것이 더 빠를 것 같습니다.
안타깝게도 압축 특성과 tar 파일 형식으로 인해 이는 불가능합니다. 파일이 어디에 있는지 알려면 전체 압축 파일의 압축을 풀어야 합니다. 파일 앞의 모든 내용은 파일이 시작되는 위치를 알아야 하며, 파일 뒤의 모든 내용은 tar
복사본을 가질 수 있도록 동일한 파일을 여러 번 보관할 수 있기 때문입니다. 동일한 파일의 "나중에" 이전 파일을 덮어씁니다. 마지막 파일의 압축을 풀어야 해당 파일의 복사본이 더 이상 없음을 확인할 수 있습니다.
따라서 당신이 할 수 있는 유일한 일은 더 빠른 압축 풀기를 위해 병렬 bzip2를 사용하는 것입니다 pbzip2
(먼저 설치해야 할 수도 있습니다!)
pbzip2 -d -c large.tar.bz2 | tar xf - path/to/specific/folder
향후 아카이브의 경우: 압축될 수 있거나 압축에 가까운 것 bzip2
및 허용되는 것많은더 빠르게 압축을 푼다. 따라서 이 문제가 더 자주 발생하면 더 빠른 압축 풀기를 허용하고 전체 아카이브의 압축을 풀지 않고 선택적으로 추출할 수 있는 방법을 사용하여 전체 콘텐츠를 다시 아카이브하는 것이 합리적일 수 있습니다.
pbzip2 -d -c large.tar.bz2 | sqfstar -comp zstd -xattrs -Xcompression-level=8 large.sqsh
( 대부분의 시스템(Fedora 기반, Debian 기반)에서 패키지의 일부인 에 추가로 pbzip
이 항목이 필요합니다 .)sqfstar
squashfs-tools
보너스: 이러한 아카이브는 직접 설치할 수 있지만 명령줄 도구를 사용하여 아카이브에서 개별 파일을 가져올 수도 있습니다.
udisksctl loop-setup -f large.sqsh # note the displayed block device name
udisksctl mount -b /dev/loop1234 # only if not automounted by previous command
답변3
file.tar.bz2에서 특정 폴더를 추출하여 자체 대상 경로 디렉토리에 넣으려면 다음을 수행하십시오.
tar -C /own/target_path/ -xvf file.tar.bz2 path/specific_folder_from_file_tar_bz2
추출할 특정 폴더는 /own/target_path에 있습니다.
인사...