Заархивированный файл GNU интегрирован со спецификациями и стандартами, реализованных с помощью алгоритма ZIP GNU сжатия, и эти сжатые файлы GNU сохраняются в формате GZIP и прикреплены с.gzip расширением. Эти.gzip файлы могут содержать один или несколько файлов, выбранных пользователем для сжатия с использованием алгоритма ZIP GNU. Полученный файл GZIP будет в меньшем размере, чем фактический размер несжатых версий файлов, хранящихся в файле GZIP. Алгоритм ZIP GNU является открытой технологией сжатия источника, а также поддержка этих стандартов сжатия GZIP и спецификации в основном интегрированы в системах Unix на базе. Есть много сжатия файлов и декомпрессии инструментов Microsoft Windows с поддержкой этих GZIP файлов, что означает, что эти программы могут быть использованы для создания или распаковки и получить доступ к информации, хранящейся в этих GZIP файлов. Есть также файл сжатия и распаковки программы, разработанные для Mac платформ, которые могут быть использованы для распаковки этих файлов GZIP. Smith Micro StuffIt Делюкс 2011 интегрирована с поддержкой сжатия файлов в формате GZIP, а также для распаковке GZIP файлов.
gzip (сокращение от GNU zip) – компьютерная утилита сжатия и восстановления (декомпрессии) файлов, использующая алгоритм DEFLATE. Используется в основном в UNIX-системах, в ряде которых является стандартом де-факто для сжатия данных. Была создана Жан-лу Галли (Jean-loup Gailly) и Марком Адлером (Mark Adler). Версия 0.1 была впервые выпущена 31 октября 1992 года, а версия 1.0 – в феврале 1993 года.
В соответствии с традициями Unix-программирования, gzip выполняет только две функции: сжатие и распаковка одного файла, он не умеет упаковывать несколько файлов в один архив. При сжатии к оригинальному расширению файла добавляется суффикс.gz. Для упаковки нескольких файлов обычно их сначала архивируют в один файл утилитой tar, а потом этот файл сжимают gzip. Таким образом, сжатые архивы обычно имеют двойное расширение.tar.gz или сокращённое.tgz.
С другой стороны, указанная особенность даёт gzip возможность работать с непрерывным потоком данных, упаковывая/распаковывая их «на лету». Это широко применяется в UNIX-системах: при помощи перенаправления потоков можно работать с упакованными файлами так же легко, как и с распакованными (распаковывая их в памяти при чтении и упаковывая при записи); многие Unix-утилиты имеют встроенную поддержку этого механизма. В последнее время gzip активно применяется для сжатия интернет-трафика. Сейчас gzip поддерживает большинство современных браузеров.
Кроме того, существует набор утилит для выполнения поиска, вывода и сравнения данных в формате gzip: zcat, zdiff, zfgrep, zless, zcmp, zegrep, zgrep, zmore.
В жизни каждого мужчины наступает момент, когда трафик растёт и сервак умирает необходимо задуматься об оптимизации. В последнем дайджесте PHP (№ 40) была упомянута ссылкой статья «How GZIP Compression Works». Исходя из статистики , 56% веб-сайтов используют GZIP. Я надеюсь, эта статья раскроет перед читателем достоинства этой технологии.
В тексте возможны ошибки (делал вычитку несколько раз, но всё же вдруг), поэтому заранее прошу прощения и прошу сообщать мне обо всех проблемах через личные сообщения, если какая-то часть перевода покажется вам некорректной.
Даже в современном мире, со скоростным интернет соединением и неограниченными хранилищами информации, сжатие данных по-прежнему актуально, особенно для мобильных устройств и стран с медленным интернет-соединением. Этот пост описывает метод де-факто сжатия без потерь для сжатия текстовых данных на веб-сайтах: GZIP.
Давайте рассмотрим пример:
Original text: «ServerGrove, the PHP hosting company, provides hosting solutions for PHP projects» (81 bytes)
LZ77: «ServerGrove, the PHP hosting company, p<3,32>ides<9,26>solutions for<5,52><3,35>jects» (73 bytes, assuming that each reference is 3 bytes)
Как вы могли заметить, слова «hosting» и «PHP» повторяются, поэтому во второй раз, когда подстрока найдена, она будет заменена ссылкой. Есть и другие совпадения, такие как «er», но т.к. это незначительно (в данном случае - «er» отсутствует в других словах) , остается оригинальный текст.
Кодирование Хаффмана решает эту проблему, создав код префикса, где ни одно кодовое слово не является префиксом другого. Это может быть более понятно на примере:
>Original text: «ServerGrove»
ASCII codification: «01010011 01100101 01110010 01110110 01100101 01110010 01000111 01110010 01101111 01110110 01100101» (88 bits)
Huffman: «1110 00 01 10 00 01 1111 01 110 10 00» (27 bits)
DEFLATE как алгоритм, который используется в GZIP сжатии, является комбинацией обоих этих алгоритмов.
Во-первых, даже при том что GZIP не самый лучший метод сжатия, он обеспечивает хороший компромисс между скоростью и степенью сжатия. Сжатие и распаковка у GZIP происходят быстро и степень сжатия на высоком уровне.
Во-вторых, нелегко внедрить новый глобальный метод сжатия данных, который смогут использовать все. Браузерам потребуется обновление, что на сегодняшний день гораздо проще за счёт автообновления. Как бы то ни было, браузеры - не единственная проблема. Chromium пытался добавить поддержку BZIP2, более лучшего метода основанного на преобразовании Барроуза-Уилера, но от него пришлось отказаться, т.к. некоторые промежуточные прокси-серверы искажали данные, т.к. не могли распознать заголовки bzip2 и пытались обработать gzip контент. Баг-репорт доступен .
$ gzip -c file.txt > file.txt.gz
$ gzip -9 -c file.txt > file.txt.gz
7z a -mx9 file.txt.gz file.txt
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
Существует несколько известных багов в некоторых версиях браузеров, поэтому рекомендуется* также добавить:
BrowserMatch ^Mozilla/4 gzip-only-text/html*это решение на текущий момент уже потеряло актуальность, как и вышеуказанные браузеры, поэтому данную информацию можно воспринимать в ознакомительных целях
BrowserMatch ^Mozilla/4\.0 no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
Кроме того, можно использовать предварительно сжатые файлы вместо того, чтобы сжимать их каждый раз. Это особенно удобно для файлов, которые не меняются при каждом запросе, например CSS и JavaScript, которые могут быть сжаты с использованием медленных алгоритмов. Для этого:
RewriteEngine On
AddEncoding gzip .gz
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz
gzip on;
gzip_min_length 1000;
gzip_types text/plain application/xml;
$originalFile = __DIR__ . "/jquery-1.11.0.min.js"; $gzipFile = __DIR__ . "/jquery-1.11.0.min.js.gz"; $originalData = file_get_contents($originalFile); $gzipData = gzencode($originalData, 9); file_put_contents($gzipFile, $gzipData); var_dump(filesize($originalFile)); // int(96380) var_dump(filesize($gzipFile)); // int(33305)
В наши дни мы сталкиваемся с файлами архивов очень часто и на всех платформах: Windows, Mac или Linux. Это могут быть программы, резервные копии систем или баз данных или просто архив файлов. Нам также часто приходится создавать свои архивы в Linux, чтобы передать несколько файлов друзьям или загрузить на файлообменник. В виде архивов распространяются пакеты программ, исходные коды, а также много других файлов, распространяемых на просторах интернета. Научиться выполнять архивирование файлов в Linux через терминал очень важно, возможно это вам понадобиться, когда не будет доступа к графическому интерфейсу, или просто со временем в терминале станет более приятно работать.
В этой инструкции я хочу подробно рассмотреть утилиты для архивирования в Linux, мы рассмотрим не только самую популярную и универсальную утилиту - tar, но и другие менее известные, а также популярные алгоритмы сжатия.
Важно отметить, что архивирование в linux это не одно и то же что и сжатие файлов linux. Архивирование - это объединение нескольких небольших файлов в один, с целю более удобной последующей передачи, хранения, шифрования или сжатия. Как я уже сказал, архивация выполняется специальными утилитами. Мы не будем трогать архивацию файлов в графическом интерфейсе, вы с ними разберетесь сами, наша тема - терминал.
Самой популярной для Linux утилитой для архивации есть tar. Она используется почти везде, для архивации исходников, упаковки пакетов. Для сжатия используются другие утилиты, в зависимости от алгоритма сжатия, например, zip, bz, xz, lzma и т д. Сначала выполняется архивация, затем сжатие, отдельными программами. Автоматический запуск некоторых утилит сжатия для только что созданного архива поддерживается в tar и других подобных программах с помощью специальных опций.
Также полезной возможностью архивации есть шифрование. Но теперь давайте рассмотрим какие существуют утилиты, с помощью которых выполняется архивирование файлов linux и как ими пользоваться.
Tar - это стандартная утилита, с помощью которой выполняется архивирование файлов Linux. Постепенно из небольшой программы архивации она превратилась в мощный инструмент, поддерживающий работу со многими вариантами архивов и алгоритмами сжатия. Программа поддерживает большое количество параметров. Давайте рассмотрим ее синтаксис и основные параметры:
$ tar опцииf файл_для_записи /папка_файлами_для_архива
А теперь разберем основные опции:
Теперь давайте рассмотрим архивирование файлов в Linux. Чтобы создать архив используйте такую команду:
tar -cvf archive.tar.gz /path/to/files
А чтобы распаковать архив tar linux:
tar -xvf archive.tar.gz
Очень просто запомнить для упаковки используется опция c - C reate, а для распаковки - x - eX tract.
Сжатый архив создается точно так же, только с опцией -z, это в случае, если использовалось шифрование gizp, если нужно bzip то применяется опция -j:
tar -zcvf archive.tar.gz /path/to/files
$ tar -zxvf archive.tar.gz
Например, рассмотрим как заархивировать папку в Linux:
tar -zcvf home.tar.gz ~/
Хотя можно поступить по-другому, тот же архив мы получим если сначала создать обычный архив с помощью tar, а потом сжать его утилитой для сжатия, только здесь мы получаем больше контроля над процессом сжатия:
gzip archive.tar
Также можно убрать сжатие:
gunzip archive.tar.gz
Утилиты сжатия мы рассмотрим ниже.
Чтобы добавить файл в архив используйте:
tar -rvf archive.tar file.txt
Для извлечения одного файла синтаксис тот же:
tar -xvf archive.tar file.txt
Можно извлечь несколько файлов по шаблону соответствия с помощью параметра wildcard, например, извлечем все php файлы:
tar -xvf archive.tar --wildcards "*.php"
По умолчанию распаковать архив tar linux можно в текущую папку с именем архива, чтобы распаковать в нужную папку используйте ключ -C:
tar -xvf archive.tar -C /path/to/dir
Стандартную утилиту рассмотрели, теперь кратко рассмотрим ее альтернативы. Их не так много, и большинство из них уже устаревшие.
Shar позволяет создавать самораспаковывающиеся архивы. По сути, это скрипт оболочки, и для распаковки ему необходима оболочка Bash или другая совместимая с Bourne Shell. У Shar есть несколько преимуществ, но также он потенциально небезопасный, так как архив представляет собой исполняемый файл.
Опции shar:
Примеры использования shar для того чтобы заархивировать папку linux:
Создаем shar архив:
shar file_name.extension > filename.shar
Распаковываем shar архив:
ar - утилита для создания и управления архивами. В основном используется для архивации статических библиотек, но может быть использована для создания любых архивов. Раньше использовалась довольно часто но была вытеснена утилитой tar. Сейчас используется только для создания и обновления файлов статических библиотек.
Теперь рассмотрим примеры использования. Создадим статическую библиотеку libmath.a из объектных файлов substraction.o и division.o:
ar cr libmath.a substraction.o division.o
Теперь извлечем файлы из архива:
Таким образом, можно распаковать любую статическую библиотеку.
cpio - означает Copy in and out (скопировать ввод и вывод). Это еще один стандартный архиватор для Linux. Активно используется в менеджере пакетов Red Hat, а также для создания initramfs. Архивация в Linux для обычных файлов с помощью этой программы не применяется.
Опции утилиты:
Пример использования. Создаем cpio архив:
file1.o file2.o file3.o
ls | cpio -ov > /path/to/output_folder/obj.cpio
Распаковываем архив:
cpio -idv < /path/to folder/obj.cpio
Архивирование папки linux выполняется также само.
Как создать архив в linux рассмотрели. Теперь давайте поговорим о сжатии. Как я говорил, для сжатия используются специальные утилиты. Рассмотрим кратко несколько из них
Чаще всего применяется Gzip. Это стандартная утилита сжатия в Unix/Linux. Для декомпрессии используется gunzip или gzip -d Сначала рассмотрим ее синтаксис:
$ gzip опции файл
$ gunzip опции файл
Теперь разберем опции:
Примеры использования вы уже видели в описании утилиты tar. Например, выполним сжатие файла:
gzip -c файл > архив.gz
А теперь распакуем:
gunzip -c архив.gz
Но чтобы сжать папку в Linux вам придется сначала заархивировать ее с помощью tar, а уже потом сжать файл архива с помощью gzip.
bzip2 - еще одна альтернативная утилита сжатия для Linux. Она более эффективная чем gzip, но работает медленнее. Для распаковки используйте утилиту bunzip2.
Описывать опции bzip2 я не буду, они аналогичны gzip. Чтобы создать архив в Linux используйте:
В текущем каталоге будет создан файл file.bz2
Новый и высокоэффективный алгоритм сжатия. Синтаксис и опции тоже похожи на Gzip. Для распаковки используйте unlzma.
Еще один высокоэффективный алгоритм сжатия. Обратно совместимый с Lzma. Параметры вызова тоже похожи на Gzip.
Кроссплатформенная утилита для создания сжатых архивов формата zip. Совместимая с Windows реализациями этого алгоритма. Zip архивы очень часто используются для обмена файлами в интернете. С помощью этой утилиты можно сжимать как файлы, так и сжать папку linux.
Синтаксис утилиты:
$ zip опции файлы
$ unzip опции архив
Опции утилиты:
Чтобы создать Zip архив в Linux используйте.
При наличии на компьютере установленной антивирусной программы можносканировать все файлы на компьютере, а также каждый файл в отдельности . Можно выполнить сканирование любого файла, щелкнув правой кнопкой мыши на файл и выбрав соответствующую опцию для выполнения проверки файла на наличие вирусов.
Например, на данном рисунке выделен файл my-file.gzip , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.
Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл GZIP с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .
Иногда простая переустановка GNU Zip Compressed Archive может решить вашу проблему, правильно связав GZIP с GNU Zip Compressed Archive. В других случаях проблемы с файловыми ассоциациями могут возникнуть в результате плохого программирования программного обеспечения разработчиком, и вам может потребоваться связаться с разработчиком для получения дополнительной помощи.
Совет: Попробуйте обновить GNU Zip Compressed Archive до последней версии, чтобы убедиться, что установлены последние исправления и обновления.
Это может показаться слишком очевидным, но зачастую непосредственно сам файл GZIP может являться причиной проблемы . Если вы получили файл через вложение электронной почты или загрузили его с веб-сайта, и процесс загрузки был прерван (например, отключение питания или по другой причине), файл может повредиться . Если возможно, попробуйте получить новую копию файла GZIP и попытайтесь открыть его снова.
Осторожно: Поврежденный файл может повлечь за собой возникновение сопутствующего ущерба предыдущей или уже существующей вредоносной программы на вашем ПК, поэтому очень важно, чтобы на вашем компьютере постоянно работал обновленный антивирус.
Если ваш файл GZIP связан с аппаратным обеспечением на вашем компьютере , чтобы открыть файл вам может потребоваться обновить драйверы устройств , связанных с этим оборудованием.
Эта проблема обычно связана с типами мультимедийных файлов , которые зависят от успешного открытия аппаратного обеспечения внутри компьютера, например, звуковой карты или видеокарты . Например, если вы пытаетесь открыть аудиофайл, но не можете его открыть, вам может потребоваться обновить драйверы звуковой карты .
Совет: Если при попытке открыть файл GZIP вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .
Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов GZIP, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов GZIP могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.
Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла GZIP . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать GNU Zip Compressed Archive. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл GZIP.
Если вы выполнили все описанные выше шаги , а ваш файл GZIP по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.