답변:
tar.gz 파일에는 색인이 없습니다. zip 또는 다른 아카이브 형식과 달리 포함 된 파일 또는 기타 메타 데이터의 목록을 얻는 것이 간단하거나 저렴하지 않습니다. 아카이브에 포함 된 파일을 표시하려면 tar는 실제로 압축을 풀고 파일을 추출해야합니다. -t
옵션 의 경우에는 메모리에만 있습니다.
사용 사례에서 일반적인 패턴이 아카이브에 포함 된 파일을 나열하는 것이라면 압축 된 파일에 파일 인덱스를 추가 할 수있는 아카이브 형식 (예 : zip)을 사용하는 것이 좋습니다.
더 복잡한 시나리오 에 대해서는 HDF5 형식을 살펴볼 수도 있습니다.
난 그냥 내 대답을 증명할 수있는 측정을해야했다 그들에 많은 파일과 일부 디렉토리를 생성하고 그들 모두를 포장 tar czf files#.tgz files#
하고 zip -r files#.zip files#
.
테스트를 위해 디스크 속도 측정을 피하기 위해 매번 포장 풀기 명령을 두 번 실행하고 두 번째 실행 결과를 얻었습니다.
100,000 개의 빈 파일이files1
포함 된 디렉토리 .
$ time tar tzf files1.tgz >/dev/null
tar tzf files1.tgz > /dev/null 0,56s user 0,09s system 184% cpu 0,351 total
$ time unzip -l files1.zip >/dev/null
unzip -l files1.zip > /dev/null 0,30s user 0,34s system 99% cpu 0,649 total
지퍼가 더 느립니다.
512 바이트 의 임의 데이터가 files2
있는 5,000 개의 파일이 포함 된 디렉토리
$ time tar tzf files2.tgz >/dev/null
tar tzf files2.tgz > /dev/null 0,14s user 0,03s system 129% cpu 0,131 total
$ time unzip -l files2.zip >/dev/null
unzip -l files2.zip > /dev/null 0,03s user 0,06s system 98% cpu 0,092 total
아직 설득력이 없지만 이번에는 지퍼가 더 빠릅니다.
5kB 의 임의 데이터가 files3
있는 5,000 개의 파일을 포함하는 디렉토리
$ time tar tzf files3.tgz >/dev/null
tar tzf files3.tgz > /dev/null 0,42s user 0,03s system 111% cpu 0,402 total
$ time unzip -l files3.zip >/dev/null
unzip -l files3.zip > /dev/null 0,03s user 0,06s system 99% cpu 0,093 total
이 테스트에서 파일이 커질수록 tar가 파일을 나열하는 것이 더 어렵다는 것을 알 수 있습니다.
나에게 zip은 매우 작은 (거의 비어있는) 많은 파일에서만 볼 수있는 약간의 오버 헤드를 가져 오는 것처럼 보이지만 많은 수의 큰 파일의 경우 아카이브에 포함 된 파일을 나열 할 때 경연에서 승리합니다.
-z
옵션을 잊었습니다 :tar -tvfz
. 유사 : 타르 tvfz에 반대 명령 타르 TVF를 사용하면 어떻게됩니까?