전체 내용을 스캔하지 않고 *.tar.gz 파일의 모든 파일을 나열할 수 있습니까?

전체 내용을 스캔하지 않고 *.tar.gz 파일의 모든 파일을 나열할 수 있습니까?

나는 이 방법만 알고 있다:

tar --full-time -tvf /path/to/file.tar.gz

그러나 모든 아카이브를 tar 스캔하게 되므로 아카이브가 큰 경우 시간이 많이 소요됩니다. 내 질문은 *.7z 또는 *.rar와 같은 다른 형식과 같이 시작 부분만 스캔하고 특정 유형의 헤더만 스캔하는 방법이 있을까요?

답변1

가장 간단한 대답은 '아니요'입니다. "

7Zip,RAR zip,,외., 이중 기능 프로그램/파일 형식 모두. 개별 파일을 압축한 다음 압축 결과를 보관합니다. 이로 인해 파일의 일부 부분이아니요압축하지만 결과적으로 프로그램이 개별 파일에 액세스할 수 있습니다.

gzip( .gz부분적으로) 다릅니다. 단일 바이트 스트림만 압축합니다. 바이트 스트림은 에서 제공됩니다 tar. bzip2( .bz2)는 다른 알고리즘을 사용하더라도 동일한 작업을 수행합니다. tar아카이빙 프로그램 gzip이자 압축 프로그램입니다. 아카이브에 완전히 도달하려면 스트림이 다음을 수행해야 합니다.첫 번째압축을 풀어보세요. 이는 경험을 통해서만 얻을 수 있다전체 파일. 그런 다음에만 tar아카이브의 개별 부분에 액세스할 수 있습니다.

여기서 해당 단계가 표시되지 않는 이유는 해당 단계가 직접적으로 제공되는 것이 아니라 gzip내장되어 있기 때문입니다.tar그 자체tar로 출력 스트림을 파이프하는 방법을 알고 있습니다 gzip.

답변2

아니요, 불가능합니다. 보다위키피디아tar 파일 형식에 대한 설명입니다. 기본적으로는 교대로 반복되는 순서일 뿐입니다.파일 헤더그리고문서 내용. 처음에는 디렉터리가 없으며 각 파일의 모든 정보는 해당 디렉터리에 있습니다.파일 헤더.

헤더에는 파일 크기가 포함되므로 콘텐츠만 나열된 경우 독자는 다음 헤더의 시작 부분을 찾아 콘텐츠 전체 읽기를 건너뛸 수 있습니다. 그러나 tar 파일이 압축된 경우에는 압축되지 않은 적절한 바이트 수를 건너뛸 수 있도록 먼저 내용의 압축을 풀어야 하기 때문에 이는 불가능합니다.

관련 정보