tar와 pigz를 사용하여 폴더를 압축하고 백업을 저장합니다. 이 폴더의 크기는 약 250GB 이상입니다. 이 폴더에는 다양한 하위 폴더에 있는 수많은 텍스트 및 로그 파일, ISO 및 zip 파일을 포함하여 다양한 콘텐츠가 포함되어 있습니다. 이 폴더를 완전히 압축하는 데는 약 1시간(경우에 따라 그 이상)이 소요됩니다. 현재 내 스크립트에서 사용하고 있습니다.
tar -cf - <data_folder> | pigz -1 > <output_file>.tar.$
ISO 및 zip 파일의 압축을 제외하여 압축 시간을 줄이고 싶습니다. 나는 그것들(ISO와 zip 파일)이 gzip 파일(압축되지 않은)에 포함되기를 원합니다.
내 질문은 이것입니다:유형에 따라 파일을 선택적으로 압축하고 gzip 출력에 압축되지 않은 파일을 계속 포함할 수 있습니까? 이것을 시도하는 방법?
답변1
아니 당신은 할 수 없습니다. 적어도 직접적으로는 아닙니다.
tar
압축이 수행되지 않습니다. (가상) 파일 시스템의 일부만 읽고 여기에서 응집력 있는 스트림을 생성합니다. 그런 다음 이 스트림은 일반적으로 gzip
/libz 와 같은 압축 도구/라이브러리로 전달됩니다 . 압축된 부분은 개별 파일을 보거나 알지도 못합니다. 에 의해 생성된 스트림을 압축합니다 tar
. 따라서 현재 방법에는 선택적 압축을 추가할 수 없습니다.
당신이 할 수 있는 일은 각 파일을 개별적으로 압축한 다음 tar 아카이브에 추가하여 tar 아카이브를 점진적으로 구축하는 것입니다. 이렇게 하면 압축되지 않은 ISO 이미지를 아카이브에 추가하도록 선택할 수 있습니다. 그러나 tar 아카이브 자체는 압축되지 않습니다. 따라서 압축을 푼 후에는 적절한 경우 각 파일을 개별적으로 압축도 풀어야 합니다.
isos 및 zip 파일을 압축하는 데 실제로 얼마나 많은 시간이 손실됩니까? 스트림 처리를 보면 tar | pigz > <file>
그렇게 많은 시간을 낭비하지 않을 것 같습니다. 블록이 디스크에 기록되고, 다음 블록이 압축되고, 스트림이 구축됩니다. 동시에 발생합니다.
어쩌면 전략을 최적화할 수도 있습니다.
모든 iso 및 zip 파일을 전용 디렉터리에 넣은 다음 세 단계로 아카이브를 구축할 수 있습니다. tar 및 나머지 압축, iso 디렉터리 추가, zip 디렉터리 추가. 결과 아카이브에는 여전히 외부 아카이브의 압축을 풀고 내부 아카이브의 압축을 풀고 압축을 푸는 긴 추출 프로세스가 필요합니다. 그러나 이는 각 개별 파일의 압축을 푸는 것보다 더 실현 가능합니다.
아니면 명령을 조정합니까? 파일 시스템의 tar 아카이브여야 합니까, 아니면 dd
전체 파티션을 백업하는 데 사용할 수 있습니까? 전체 파티션을 백업하면 디스크에서 지속적으로 읽을 수 있다는 장점이 있는데, 이는 파일 시스템을 사용하는 것보다 더 빠를 수 있습니다. 더 큰 덩어리를 처리하도록 조정할 수 있다고 확신합니다 pigz
. 그러면 iso 및 zip 파일이 문제인 경우 작업 속도가 빨라질 것입니다. 또한 mbuffer
결과를 디스크에 쓰기 전에 버퍼링(예:)을 추가하여 미디어 액세스를 더욱 최적화할 수 있습니다.