Довгий короткий сюжет: інструмент GNU tar не проходить через zip / unzip, оскільки нікого не цікавить.
Довга історія, оригінальний розмір:
tarспочатку не призначений для розпакування та стискання файлів, а для архівації кількох файлів в одному великому файлі. Оскільки люди не лише хотіли архівувати свої файли, а й стискати їх, тому вони просто tarпередають вихід через будь-який компресор, який приймає введення потоку даних і передає результати у файл. Прибуток!
Тепер, щоб зробити таке завдання максимально безболісним, tarвирішили внутрішньо передавати файли, згенеровані до інструментів стиснення, таких як gzip, lzma тощо, які під час запуску активувалися спеціальними прапорами для кожного формату tar. Ось чому при спробі витягти пошкоджений файл через tarвас відображається основна помилка інструменту, а не tar:
$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file
Отже, справа не в тому, tarщо не розпаковує поштові файли, просто tarне має можливості передавати її через правильний інструмент, оскільки ніхто реально не намагався її реалізувати, а zip вже виконує функцію архіву файлів файлу tar. у форматі менше підстав для tar, щоб підтримати його.
Тепер є інструменти «все в одному», які стискають / розтискають все, що ви кидаєте на них, знову ж таки, вам потрібно мати правильні інструменти, щоб насправді підтримувати. Якщо у вас їх немає, інструмент вийде з ладу.
bsdtarможна витягнути.zipархіви: P