Команда compress

Команда compress предназначена для сжатия данных без потерь с помощью соответствующей утилиты, использующей алгоритм Лемпела-Зива. Целью использования данной утилиты является экономия дискового пространства. Используемый утилитой алгоритм долгое время подпадал под действие патента, поэтому она не снискала особой популярности. Тем не менее, в данный момент она может беспрепятственно использоваться, ведь срок действия патента истек. В то же время, она не позволяет достичь такой степени сжатия данных, как утилиты bzip2 и xz, посему может использоваться лишь как аналог популярных утилит gzip и zip.

Базовый синтаксис команды выглядит следующим образом:

$ compress [параметры] <имена файлов>

Чаще всего compress используется вообще без каких-либо параметров, причем в качестве аргументов может передаваться неограниченное количество имен файлов, которые следует сжать. По умолчанию оригинальные версии файлов заменяются на их сжатые версии (с расширением .Z) с соответствующими метаданными (то есть, меткой времени модификации, правами доступа, именами владельца и группы владельцев и так далее). Если вас не устраивает такое положение дел, вы можете воспользоваться параметром для сохранения оригинальных версий файлов (в этом случае утилита будет выводить сжатые данные посредством стандартного потока вывода, поэтому вам придется воспользоваться перенаправлением потока данных таким образом, как показано ниже). Параметр -f позволяет принудительно перезаписать существующий файл архива. Параметр -v позволяет выводить информацию о степени сжатия файла. Наконец, параметр -r позволяет осуществить рекурсивное сжатие файлов.

Если же вам нужно создать архив с несколькими файлами внутри, одной утилиты compress будет явно мало. Для этой цели также понадобится утилита tar, с помощью которой можно создать архив с файлами, после чего сжать этот архив с помощью утилиты compress. Например, вы можете использовать следующую последовательность команд для создания архива с именем archive.tar.Z:

$ tar -cf archive.tar <имена файлов>
$ compress archive.tar

Параметры -c и -f утилиты tar предназначены для указания на необходимость добавления всех файлов в один архив (-c) и чтения имени файла архива из следующего аргумента (-f).

Альтернативным вариантом является замена последней команды на параметр -Z утилиты tar, позволяющий автоматически сжать полученный архив с помощью compress:

$ tar -cfZ archive.tar.Z <имена файлов>

Установка утилиты

В первую очередь вам придется установить рассматриваемую утилиту; проще всего это сделать с помощью терминала путем исполнения соответствующей вашему дистрибутиву команды. Подробнее об установке программного обеспечения рассказано в данном разделе.

Команда для Linux Mint и Ubuntu:

$ sudo apt-get install ncompress

Команда для Fedora Workstation:

$ sudo dnf install ncompress

Примеры использования

1. Сжатие одного файла

$ compress text.txt

В результате оригинальный файл text.txt будет заменен на свою сжатую версию text.txt.Z.

2. Одновременное сжатие нескольких файлов

$ compress text1.txt text2.txt text3.txt

В этом случае также все оригинальные версии файлов (text1.txt, text2.txt, text3.txt) будут заменены на сжатые версии (text1.txt.Z, text2.txt.Z, text3.txt.Z). Добавление нескольких файлов в единый файл архива будет рассмотрено ниже.

3. Сжатие одного файла с сохранением оригинала

$ compress -c text.txt > text.txt.Z

Теперь оригинальный файл text.txt будет оставлен в директории вместе со сжатой версией text.txt.Z.

4. Восстановление оригинальной версии файла из сжатой версии

$ compress -d text.txt.Z

В результате сжатая версия файла text.txt.Z будет заменена на его оригинальную версию text.txt.

5. Создание сжатого архива со всеми файлами из директории

$ tar -cfZ etc.tar.Z /etc/

В результате будет создан архив etc.tar.Z с файлами из директории /etc/.

6. Рекурсивное сжатие файлов из директории

$ compress -rv nolf228

В результате в заданной директории все подвергающиеся сжатию файлы будут заменены на их сжатые версии.