Архивация, компрессия и конвертация файлов. В чём разница?

Архивация, компрессия и конвертация. Со временем всё смешалось, но изначально всё было иначе.

Архивация и компрессия

Сама по себе архивация не подразумевает сжатие (компрессию) данных. Архивация это лишь объединение нескольких файлов в один единый файл-архив. Компрессия подразумевает сжатие данных (без потерь). Т.е. если вам надо упаковать файлы в единый файл-контейнер и сжать его до меньшего размера, то вам необходимы 2 операции: архивирования и сжатия/компрессии данных. Собственно, это по-умолчанию и делают архиваторы, именно в такой последовательности — сперва архивирование (складывание множества файлов в один), а затем сжатие полученного файла. Однако, может использоваться и другой порядок, сперва компрессия файлов, а затем архивирование компрессионных файлов.

В идеологически верном «философии Unix» (делать только одну вещь) архиваторе tar в этом плане всё очень наглядно видно в расширении файла. Если выполняется просто операция архивирования (складывание файлов в один файл), то и расширение будет просто .tar. Если же с полученным архивом дополнительно требуется выполнить операцию компрессии (сжать полученный архив), то и расширение, соответственно, будет вида: «.tar + расширение компрессора». E.g., если используется компрессор gzip, то расширение будет «.tar.gz», что говорит о том, что это конечный компрессионный файл типа .gz, а в нём архив типа .tar. Всё очень ясно и наглядно, в отличии от других архиваторов с функциями компрессоров.

Существуют отдельно программы для архивации, такие как tar, и для компресси, такие как gzip, bzip2, etc.

Компрессор работает только с одним файлом. Получает на вход какой-либо файл и на выходе выдаёт компрессионный файл, разжав который можно получить исходный файл. Если же компрессор может работать с несколькими входными файлами и складывает их в один выходной компрессионный файл, то в данном случае он также дополнительно выполняет чужие для себя функции архиватора. Это уже не просто компрессор, а архиватор-компрессор, ну или компрессор-архиватор, как угодно.

Некоторая путаница создаётся из-за того, что выдаваемые компрессорами и архиваторами файлы называют «архивами». Дело в том, что выдаваемый компрессором файл, такой как, e.g., .xz, .gz, .bz2, это не совсем архив в его прямом смысле. Такие контейнеры могут содержать и содержат только один файл. Это не совсем архивы, а скорее компрессионные файлы.

Компрессия и конвертация

Компрессия (сжатие) не подразумевает потерю данных, i.e. компрессия/сжатие это всегда сжатие без потерь. Сжатие с потерями это уже не компрессия, а конвертация. Именно конвертация предполагает возможность сжатия данных с потерями. Именно при конвертации теряется часть данных, за счёт этого размер уменьшается больше, чем в компрессии. Со временем конвертацию также стали называть компрессией/сжатием, и поэтому появились такие виды сжатия как сжатие без потерь — изначальное понятие компрессии, и сжатие с потерями — конвертация.