Mam tar.gz
plik 32 GB. Próbowałem wyodrębnić z niego określone foldery, więc wymieniłem zawartość za pomocą następującego polecenia, aby wyświetlić strukturę plików:
tar -tvf file.tar.gz > files.txt
Wydaje się, że lista wszystkich plików trwa wieczność. Moje pytanie brzmi: czy flaga -t wyodrębnia również pliki? Wiem, że nie wyodrębnia się z dysku, ale czas, jaki zajmuje, sprawia, że zastanawiam się, czy faktycznie przetwarza je w jakimś buforze.
command-line
tar
Saif
źródło
źródło
-z
opcję:tar -tvfz
. Podobne: Co się stanie, jeśli użyjesz polecenia tar tvf w przeciwieństwie do tar tvfz?Odpowiedzi:
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#
izip -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 .zip jest tutaj wolniejszy.
Test 2
Katalog
files2
zawierający 5000 plików z 512 bajtami losowych danych każdy.Nadal nie przekonuje, ale tym razem zip jest szybszy.
Test 3
Katalog
files3
zawierający 5000 plików z 5kB losowych danych każdy.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.
źródło