Pliki tar.gz nie mają indeksu. W przeciwieństwie do zip lub innych formatów archiwów uzyskanie listy zawartych plików lub innych metadanych nie jest trywialne ani tanie. Aby pokazać, które pliki są zawarte w archiwum, tar rzeczywiście musi rozpakować archiwum i wyodrębnić pliki, chociaż w przypadku -t
opcji robi to tylko w pamięci.
Jeśli częstym wzorcem w twoim przypadku użycia jest lista plików zawartych w archiwum, możesz rozważyć użycie formatu archiwum, który może dodać indeks pliku do skompresowanego pliku, np. Zip.
Być może chcesz także przyjrzeć się formatowi HDF5 , aby uzyskać bardziej złożone scenariusze.
Pomiary
Po prostu musiałem wykonać kilka pomiarów, aby udowodnić moją odpowiedź, i utworzyłem kilka katalogów z wieloma plikami i spakowałem je, które oba, tar czf files#.tgz files#
i zip -r files#.zip files#
.
Do testów dwukrotnie uruchomiłem polecenie rozpakowywania i wziąłem wynik drugiego uruchomienia, aby uniknąć pomiaru prędkości dysku.
Test 1
Katalog files1
zawierający 100 000 pustych plików .
$ 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
zip jest tutaj wolniejszy.
Test 2
Katalog files2
zawierający 5000 plików z 512 bajtami losowych danych każdy.
$ 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
Nadal nie przekonuje, ale tym razem zip jest szybszy.
Test 3
Katalog files3
zawierający 5000 plików z 5kB losowych danych każdy.
$ 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
W tym teście widać, że im większe pliki, tym trudniej jest je wymienić.
Wniosek
Dla mnie wygląda na to, że zip wprowadza niewielki narzut, który zauważysz tylko przy wielu bardzo małych (prawie pustych) plikach, podczas gdy dla dużej liczby większych plików wygrywa konkurs, wymieniając pliki zawarte w archiwum.
-z
opcję:tar -tvfz
. Podobne: Co się stanie, jeśli użyjesz polecenia tar tvf w przeciwieństwie do tar tvfz?