Довгий короткий сюжет: інструмент 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