Команда mscompress

Команда mscompress позволяет использовать утилиту с соответствующим именем для сжатия файлов с использованием алгоритма Лемпела-Зива LZ77. В отличие от утилиты compress из мира UNIX, данная утилита создает файлы, бинарно совместимые с утилитами командной строки COMPRESS.EXE и EXPAND.EXE от Microsoft. Утилита не позволяет задать степень сжатия или указать какие-либо другие параметры компрессии. Она даже не позволяет указать имя результирующего файла — его имя формируется на базе имени исходного файла путем добавления символа подчеркивания в конец.

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

$ mscompress [параметр] [имя файла 1 ...]

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

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

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

Команда для Linux Mint, Ubuntu, Debian, Bodhi Linux:

$ sudo apt-get install mscompress

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

$ sudo dnf install mscompress

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

Компрессия отдельных файлов

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

$ du -h test.txt
472K test.txt

Файл занимает 472 Кб дискового пространства. Для сжатия файла достаточно передать утилите его имя.

$ mscompress test.txt && du -h test.txt_
192K test.txt_

Результирующий файл занимает уже 192 Кб. Неплохо, даже несмотря на то, что был сжат текстовый файл.

$ du -h test.txt
472K test.txt

Исходный файл остался на месте.

Компрессия групп файлов

Для демонстрации компрессии нескольких файлов добавим к рассмотрению небольшой файл сценария:

$ du -h test.*
4,0K test.sh
472K test.txt

Файл сценария занимает 4 Кб, текстовый файл — как и ранее 472 Кб. Для сжатия нескольких файлов следует передать утилите их имена:

$ mscompress test.txt test.sh && du -h test.*_
4,0K test.sh_
192K test.txt_

Можно подумать, что файл сценария не был сжат, но это не так. Его размер меньше размера кластера диска, поэтому следует получить размер файла в байтах.

$ du -b test.sh*
370 test.sh
226 test.sh_

Размер файла уменьшился с 370 до 226 байт, из чего можно сделать вывод, что с файлами малого размера утилита также успешно работает.

Декомпрессия файлов

Для декомпрессии полученных с помощью утилиты файлов следует использовать отдельную утилиту msexpand.