Существует как минимум четыре отдельных задания, которые часто путают друг с другом, потому что популярные инструменты интегрируют их:
- Архивирование: возможность объединять несколько файлов (включая метаданные) в один файл, сохраняя как можно больше вещей. В мире Linux / Unix архивирование традиционно выполняется в формате файлов TAR.
- Сжатие: способность без потерь минимизировать размер потока двоичных данных. В мире Linux / Unix это традиционно делают GZip и BZip2.
- Шифрование: возможность шифрования данных ключами
- Контрольная сумма: способность обнаруживать (и, возможно, исправлять) ошибки.
Повсеместное распространение .tar.gz и .tar.bz соответствует философии Unix, заключающейся в том, что небольшие инструменты хорошо выполняют одну работу, а не один инструмент, который делает все. Формат файла TAR не поддерживает сжатие или шифрование, но он может быть сжат любым другим компрессором (включая .tar.zip или .tar.7z). Работа GZip и BZip2 заключается в простом сжатии файлового потока в другой файловый поток. Слой сжатия не должен заботиться о том, как сохранить метаданные, шифрование или контрольную сумму. Однако со временем в tar
программе было сделано несколько ярлыков для более удобной работы с компрессором.
В формате файлов zip и 7z эти отдельные задания выполняются одной программой в одном формате суперфайлов.
Почему вышеприведенная тенденция сохраняется, хотя все это портативные форматы? Есть ли какие-то конкретные преимущества использования определенного формата архива на конкретной платформе?
Так как это было сделано, исходные коды программ традиционно распространяются как .tar.gz или .tar.bz2, потому что сохранение прав доступа к файлу, времени модификации и т. Д. Важно для различных инструментов, используемых для программирования (например, make).
Отдельный этап архивирования и сжатия работал очень хорошо в течение многих лет, он имеет явное преимущество, заключающееся в возможности свободно смешивать и сопоставлять архив и сжатие, а его недостаток (двухэтапный процесс сжатия) можно легко обойти, разработав более интеллектуальные инструменты ( большинство современных программ сжатия linux напрямую сжимают в .tar.gz или .tar.bz2, скрывая промежуточный шаг).
Нет веских причин для перехода на другие форматы файлов, более новые компрессоры не имеют значительно лучшей степени сжатия, чтобы оправдать нарушение традиции, и tar может сохранить все достаточно хорошо.