freeze

Сжатие и распаковка файлов (UNIX)

Синтаксис:

freeze [-cdfvVz] [[+n1,...,n8] [имя_файла]]...

Поддерживаемые платформы:

Neutrino

Опции:

-c

Записать результаты операции сжатия/распаковки в стандартный поток вывода. Файлы не изменяются.

-d

Распаковать файлы из архива (melt).

-f

Инициировать создание файла .F. С помощью этой опции создается файл .F, даже если он уже существует, без запроса подтверждения пользователя. Файл .F создается даже в том случае, если сжатый файл больше исходного.

-V

Показать номер версии и возможности компиляции.

-v

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

-z

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

+n1,...,n8


Список из 8 чисел, разделенных запятыми и определяющих значения для статической таблицы Хаффмана.

Описание:

Утилита freeze сжимает указанные файлы или стандартный поток ввода. В случае уменьшения размера файл заменяется файлом с расширением .F (для инициирования создания файла .F даже в том случае, если сжатый файл имеет больший размер, используется опция -f). Если файлы не определены, сжатие выполняется для стандартного потока ввода, и его результаты записываются в стандартный поток вывода.

Если опция -f не выбрана и утилита freeze запущена в приоритетном режиме, выводится запрос о подтверждении необходимости перезаписи файла.

Примечание. При создании файла .F исходный файл удаляется.

Как правило, для утилиты freeze настроено несколько ссылок. Поведение утилиты freeze зависит от того, с помощью какого имени команды она вызвана:

Ссылка

Эквивалент

melt

freeze -d

fcat

freeze -cd


Восстановить сжатые файлы до исходных можно следующим образом:
или
Если указаны имена файлов, то утилита freeze определяет принадлежность, режим, время доступа и время изменения исходного файла и соответствующего файла .F. Таким образом, утилиту freeze можно использовать в целях архивирования, а после распаковки ее также можно выполнять совместно с утилитой make.

Утилитой freeze используется алгоритм Лемпеля-Зива при первом выполнении и динамический алгоритм Хаффмана при втором выполнении. Размер "скользящего окна" составляет 8 КБ, а максимальная длина "совпадающей строки" – 256 символов. Позиции в окне кодируются с использованием статической таблицы Хаффмана.

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

Степень сжатия зависит от размера входного файла и распределения подстрок символов и их вероятностей. Как правило, текстовые файлы (например, программы на языке С) сжимаются на 60-75%, тогда как исполняемые файлы – на 50%. Сжатие с помощью данной утилиты, как правило, намного более эффективно, чем сжатие путем кодирования по методу Лемпеля-Зива-Велча или методу Хаффмана, хотя расчеты в этом случае более продолжительные.

Аргумент после опции + определяет значения, используемые в таблице Хаффмана. Для изменения алгоритма сжатия может потребоваться явно определить эти значения.

Примечание. Утилита сжатия freeze в перспективе будет исключена, рекомендуется использовать набор утилит GNU zip: gzip/gunzip/zcat. Набор утилит freeze будет поставляться в течение продолжительного времени, но в дальнейшем будет полностью устранен.

Примеры:

Сжатие всех файлов в текущем каталоге:

freeze *

Извлечение всех исходных и заголовочных файлов C:

melt *.[ch].F

или:

freeze -d *.[ch].F

Просмотр составного содержимого всех сжатых файлов в текущем каталоге:

fcat *.F | more

Статус завершения:

0

Нормальное завершение.

1

Возникла ошибка.

2

Размер последнего файла после сжатия увеличился.

Автор:

Леонид А. Брукхис (Leonid A. Broukhis)