Есть по крайней мере четыре отдельных задания, которые часто путают друг с другом, потому что популярные инструменты интегрируют их:
- Архивирование: возможность объединять несколько файлов (включая метаданные) в один файл, сохраняя как можно больше вещей. В мире 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 может сохранить все достаточно хорошо.