Krótko mówiąc: narzędzie tar GNU nie przepływa przez zip / rozpakuj, ponieważ nikogo to nie obchodzi.
Długa historia, oryginalny rozmiar:
tar
początkowo nie był przeznaczony do rozpakowywania i kompresowania plików, ale do archiwizowania kilku plików w jednym dużym pliku. Ponieważ ludzie nie tylko chcieli zarchiwizować swoje pliki, ale także je skompresować, więc po prostu tar
przesyłają dane wyjściowe przez dowolny kompresor, który akceptuje wejście strumienia danych i upuszcza wyniki do pliku. Zysk!
Teraz, aby takie zadanie było jak najbardziej bezbolesne, tar
postanowiłem wewnętrznie potokować pliki generowane do narzędzi do kompresji, takich jak gzip, lzma itp., Które były uruchamiane przez specjalne flagi dla każdego formatu podczas działania tar
. Dlatego, gdy próbujesz wyodrębnić uszkodzony plik tar
, wyświetla się podstawowy błąd narzędzia zamiast tar
:
$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file
Tak więc nie jest to, że tar
nie rozpakowuje plików zip, tylko tar
nie ma możliwości przepuszczenia go przez właściwe narzędzie, ponieważ nikt tak naprawdę nie zadał sobie trudu, aby go zaimplementować, a zip już spełnia funkcję archiwizacji plików pliku tar format ma mniejszy powód, aby tar go obsługiwał.
Teraz istnieją narzędzia typu „wszystko w jednym”, które kompresują / dekompresują wszystko, co na nich rzucisz, ponownie, musisz mieć odpowiednie narzędzia, aby w pełni je obsługiwać. Jeśli ich nie masz, narzędzie zawiedzie.
bsdtar
można wyodrębnić.zip
archiwa: P