Gzip linux сжать папку

Обновлено: 07.07.2024

Я пытаюсь заархивировать папку в Unix. Это можно сделать с помощью команды gzip?

Вы можете использовать gzip -r myfolder который будет рекурсивно gzip файлы. Таким же образом вы можете разархивировать файлы, используя gunzip -r myfolder которые будут разархивировать файлы рекурсивно. Для получения дополнительной информации, man gzip Использование tar ; он поддерживает параметры для сжатия. gzip разработан как дополнение tar , а не как замена. Обратите внимание, что предложение @ val0x00ff почти наверняка не то, чего вы хотите достичь. @Shadur, поэтому я опубликовал это, так comment как это не было ответом на его вопрос. Чтобы продемонстрировать, что означает @Shadur. Данные файлы 1 и 2 в папке playground . gzip -r ./playground даст вам 1.gz и 2.gz (и не более 1 и 2 файлы) в папке playground , а не ZIP-файл со всем в нем.

В отличие zip , gzip функционирует в качестве алгоритма сжатия только .

Из - за различных причин , некоторые из которых слушать обратно в эпоху ленточных накопителей, Unix использует программу под названием tar архивировать данные, которые затем могут быть сжат с помощью программы сжатия , как gzip , bzip2 , 7zip и т.д.

Чтобы «сжать» каталог, правильная команда будет

Это будет сказать , tar чтобы

сжать его с помощью алгоритма z (gzip)

c (создать) архив из файлов в directory ( tar по умолчанию является рекурсивным)

v (многословно) список (в / dev / stderr, чтобы он не влиял на переданные по конвейеру команды) всех файлов, которые он добавляет в архив.

и сохранить вывод как f (файл) с именем archive.tar.gz

Команда tar предлагает gzip поддержку (через -z флаг) исключительно для вашего удобства. Команда gzip / lib полностью отделена. Команда выше фактически такая же, как

Для распаковки и распаковки архива в текущий каталог вы бы использовали

Эта команда фактически такая же, как

tar имеет много, много, много других вариантов и применений; Я от всей души рекомендую прочитать его man-страницу когда-нибудь.

Просто чтобы сделать вещи еще более явными, это в точности соответствует tar -cv directory | gzip > archive.tar.gz . Полученный архив может быть затем извлечен tar -zxvf или даже zcat file.tar.gz | tar -xv . Дело в том, что tar полностью независим от gzip, tar команда просто включает поддержку gzip для удобства. Я использую в tar cvzf течение достаточно долгого времени. Следует отметить одну вещь: если вы используете Windows ( 7-zip чтобы указать), чтобы распаковать *.tar.gz файл, это займет два раунда. Один - распаковать *.tar.gz файл в *.tar файл, второй - распаковать этот tar-файл в исходное содержимое. это увеличивает общее время распаковки, особенно для больших файлов (например, журналов) Влияет ли наименование архива на машины? Я знаю, что было бы неплохо, чтобы люди знали алгоритм, изначально использовавшийся для его архивирования (отсюда .gz), но кроме этого имеет ли значение, как вы называете архив? @hello_there_andy Это не имеет значения для большинства юниксов, но Windows (и завершение Smart Tab в Linux) делает предположения на основе расширения имени файла.

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

пример

Теперь запустите gzip команду

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

пример

В результате получается следующий файл:

Вы можете подтвердить его содержание:

Я написал эти 2 команды:

(. ) Пожалуйста, проверьте перед использованием (так как есть 'rm -f', который потенциально может удалить важные данные, если используется необычным образом).

Как пользоваться:

cd /home/; gzipdir MyDirectory или же gzipdir /home/MyDirectory

Создаст /home/MyDirectory.tgz и удалит MyDirectory в случае успеха (. ).

Создаст / home / MyDirectory и удалит /home/MyDirectory.tgz в случае успеха.

Чтобы заархивировать ВСЕ файлы в каталоге: find ./* -maxdepth 0 -type d -exec gzipdir <> \; (будьте осторожны с командой find, -exec echo <> сначала проверьте ее , и убедитесь, что вы не захватываете «./», который заархивирует каталог PARENT, возможно, нарушая весь ваш домашний каталог)

Я рекомендую использовать pigz ( параллельная реализация GZip )

tar -cvf - dir | pigz -9 > /path/to/dir.tar.gz

Я тоже часто его использую (и pixz), но работает ли он, когда в игру вступают каналы и перенаправление вывода?

Ответ на вопрос «Могу ли я заархивировать всю папку, используя zip на linux?», Должен использовать синтаксис:

В наши дни мы сталкиваемся с файлами архивов очень часто и на всех платформах: Windows, Mac или Linux. Это могут быть программы, резервные копии систем или баз данных или просто архив файлов. Нам также часто приходится создавать свои архивы в Linux, чтобы передать несколько файлов друзьям или загрузить на файлообменник. В виде архивов распространяются пакеты программ, исходные коды, а также много других файлов, распространяемых на просторах интернета. Научиться выполнять архивирование файлов в Linux через терминал очень важно, возможно это вам понадобиться, когда не будет доступа к графическому интерфейсу, или просто со временем в терминале станет более приятно работать.

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

Архивирование в Linux

Важно отметить, что архивирование в linux это не одно и то же что и сжатие файлов linux. Архивирование - это объединение нескольких небольших файлов в один, с целю более удобной последующей передачи, хранения, шифрования или сжатия. Как я уже сказал, архивация выполняется специальными утилитами. Мы не будем трогать архивацию файлов в графическом интерфейсе, вы с ними разберетесь сами, наша тема - терминал.

Самой популярной для Linux утилитой для архивации есть tar. Она используется почти везде, для архивации исходников, упаковки пакетов. Для сжатия используются другие утилиты, в зависимости от алгоритма сжатия, например, zip, bz, xz, lzma и т д. Сначала выполняется архивация, затем сжатие, отдельными программами. Автоматический запуск некоторых утилит сжатия для только что созданного архива поддерживается в tar и других подобных программах с помощью специальных опций.

Также полезной возможностью архивации есть шифрование. Но теперь давайте рассмотрим какие существуют утилиты, с помощью которых выполняется архивирование файлов linux и как ими пользоваться.

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

$ tar опции f файл_для_записи /папка_файлами_для_архива

А теперь разберем основные опции:

  • A - добавить файл к архиву
  • c - создать архив в linux
  • d - сравнить файлы архива и распакованные файлы в файловой системе
  • j - сжать архив с помощью Bzip
  • z - сжать архив с помощью Gzip
  • r - добавить файлы в конец архива
  • t - показать содержимое архива
  • u - обновить архив относительно файловой системы
  • x - извлечь файлы из архива
  • v - показать подробную информацию о процессе работы
  • f - файл для записи архива
  • -C - распаковать в указанную папку
  • --strip-components - отбросить n вложенных папок

Теперь давайте рассмотрим архивирование файлов в Linux. Чтобы создать архив используйте такую команду:

tar -cvf archive.tar.gz /path/to/files

А чтобы распаковать архив tar linux:

tar -xvf archive.tar.gz

Очень просто запомнить для упаковки используется опция c - Create, а для распаковки - x - eXtract.

Сжатый архив создается точно так же, только с опцией -z, это в случае, если использовалось шифрование gizp, если нужно bzip то применяется опция -j:

tar -zcvf archive.tar.gz /path/to/files

$ tar -zxvf archive.tar.gz

Например, рассмотрим как заархивировать папку в Linux:

tar -zcvf home.tar.gz

Хотя можно поступить по-другому, тот же архив мы получим если сначала создать обычный архив с помощью tar, а потом сжать его утилитой для сжатия, только здесь мы получаем больше контроля над процессом сжатия:

Также можно убрать сжатие:

Утилиты сжатия мы рассмотрим ниже.

Чтобы добавить файл в архив используйте:

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 есть несколько преимуществ, но также он потенциально небезопасный, так как архив представляет собой исполняемый файл.

  • -o - сохранять архив в файл вместо стандартного вывода
  • -l - ограничить размер выходного файла
  • -L - ограничить размер выходного файла и разбить его на части
  • -n - имя архива не будет включено в заголовок
  • -a - разрешить автоматическую генерацию заголовков

Примеры использования shar для того чтобы заархивировать папку linux:

Создаем shar архив:

shar file_name.extension > filename.shar

Распаковываем shar архив:

ar - утилита для создания и управления архивами. В основном используется для архивации статических библиотек, но может быть использована для создания любых архивов. Раньше использовалась довольно часто но была вытеснена утилитой tar. Сейчас используется только для создания и обновления файлов статических библиотек.

  • - d - удалить модули из архива
  • - m - перемещение членов в архиве
  • - p - напечатать специфические члены архива
  • - q - быстрое добавление
  • - r - добавить члена к архиву
  • - s - создать индекс архива
  • - a - добавить новый файл к существующему архиву

Теперь рассмотрим примеры использования. Создадим статическую библиотеку libmath.a из объектных файлов substraction.o и division.o:

ar cr libmath.a substraction.o division.o

Теперь извлечем файлы из архива:

Таким образом, можно распаковать любую статическую библиотеку.

cpio - означает Copy in and out (скопировать ввод и вывод). Это еще один стандартный архиватор для Linux. Активно используется в менеджере пакетов Red Hat, а также для создания initramfs. Архивация в Linux для обычных файлов с помощью этой программы не применяется.

  • -a - сбросить время обращения к файлам после их копирования
  • -A - добавить файл
  • -d - создать каталоги при необходимости

Пример использования. Создаем 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

Как создать архив в linux рассмотрели. Теперь давайте поговорим о сжатии. Как я говорил, для сжатия используются специальные утилиты. Рассмотрим кратко несколько из них

Чаще всего применяется Gzip. Это стандартная утилита сжатия в Unix/Linux. Для декомпрессии используется gunzip или gzip -d Сначала рассмотрим ее синтаксис:

$ gzip опции файл

$ gunzip опции файл

Теперь разберем опции:

  • -c - выводить архив в стандартный вывод
  • -d - распаковать
  • -f - принудительно распаковывать или сжимать
  • -l - показать информацию об архиве
  • -r - рекурсивно перебирать каталоги
  • -0 - минимальный уровень сжатия
  • -9 - максимальный уровень сжатия

Примеры использования вы уже видели в описании утилиты 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 используйте:

zip -r /path/to/files/*

А для распаковки:

Как видите архивирование zip в Linux не сильно отличается от других форматов.

Выводы

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

Команда Gzip для сжатия и архивации файлов в Linux

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

Gzip также ссылается на .gz формат файла и gzip утилиту, которая используется для сжатия и распаковки файлов.

Синтаксис команды gzip

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

Gzip сжимает только отдельные файлы и создает сжатый файл для каждого данного файла. По соглашению, имя файла, сжатого с помощью Gzip, должно заканчиваться либо либо, .gz либо .z .

Если вы хотите сжать несколько файлов или каталогов в один файл, сначала вам нужно создать архив Tar, а затем сжать .tar файл с помощью Gzip. Файл, который заканчивается .tar.gz или .tgz является архивом Tar, сжатым с помощью Gzip.

Gzip чаще всего используется для сжатия текстовых файлов, архивов Tar и веб-страниц. Не используйте Gzip для сжатия изображений, аудио, документов PDF и других двоичных файлов, так как они уже сжаты.

gzip может сжимать только обычные файлы. В символические ссылки игнорируются.

Сжатие файлов с gzip

Чтобы сжать один файл, вызовите gzip команду с именем файла:

gzip создаст файл filename.gz и удалит исходный файл.

По умолчанию gzip в сжатом файле хранятся временная метка, режим, владелец и имя исходного файла.

Сохранить оригинальный файл

Если вы хотите сохранить исходный (исходный) файл, используйте -k опцию:


Другой вариант сохранить исходный файл - использовать -c опцию, которая говорит, что gzip нужно писать в стандартный вывод и перенаправлять вывод в файл:

Подробный вывод

Используйте эту -v опцию, если вы хотите увидеть процентное сокращение и имена файлов, которые обрабатываются:

Сжать несколько файлов

Вы также можете передать несколько файлов в качестве аргументов команды. Например, чтобы сжать файлы с именами file1 , file2 , file3 вы бы выполнить следующую команду:

Команда выше создаст три сжатых файлов file1.gz , file2.gz , file3.gz .

Сжать все файлы в каталоге

Чтобы сжать все файлы в данном каталоге, используйте -r параметр:

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

Изменить уровень сжатия

gzip позволяет указать диапазон уровней сжатия от 1 до 9. -1 или --fast означает самую высокую скорость сжатия с минимальной степенью сжатия, -9 или --best указывает самую низкую скорость сжатия с максимальной степенью сжатия. Уровень сжатия по умолчанию - -6 .

Например, чтобы получить максимальное сжатие, вы должны выполнить:

Сжатие - это интенсивная загрузка процессора, чем выше уровень сжатия, тем дольше длится процесс.

Используя стандартный ввод

Чтобы создать .gz файл из stdin, направьте вывод команды в gzip . Например, чтобы создать резервную копию базы данных Gzipped MySQL, вы должны выполнить:

Вывод mysqldump команды будет входом для gzip .

Распаковка файлов с gzip

Чтобы распаковать .gz файл, используйте -d параметр:


Еще одна команда, которую вы можете использовать для распаковки GZIP-файла gunzip . Эта команда в основном псевдоним для gzip -d :


Возможно, вам будет легче запомнить, gunzip чем gzip -d .

Сохранить сжатый файл

Как и при сжатии файла, -k опция указывает gzip сохранить входной файл, в данном случае это сжатый файл:

Распаковать несколько файлов

Чтобы распаковать несколько файлов одновременно, передайте имена файлов в gzip качестве аргументов:

Распаковать все файлы в каталоге

При использовании -d и -r опции, gzip распаковывает все файлы в данной директории рекурсивно:

Список содержимого сжатых файлов

При использовании с -l параметром gzip показывает статистику по данным сжатым файлам:


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


Чтобы получить больше информации, добавьте -v опцию:

Вывод

С помощью Gzip вы можете уменьшить размер данного файла. Команда gzip позволяет сжимать и распаковывать файлы.

Для получения дополнительной информации о gzip команде обратитесь к странице документации Gnu gzip .

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Как сжать каталог с помощью gzip в Linux

(1 оценок, среднее: 5,00 из 5)

Как сжать каталог в Linux

К акой gzip каталог в Linux? Он определенно не использует команду gzip, потому что если вы попытаетесь сжать папку с помощью команды gzip, вы увидите эту ошибку:

Интересно, не правда ли? Команда gzip не может сжать каталог, потому что, по сути, gzip работает с отдельными файлами, а не со всей папкой.

Что вы можете сделать сейчас? Как GZIP сжать файл в Linux?

gzip каталог с помощью команды tar

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

Если вы объедините tar с gzip, команда tar создаст один единственный архивный файл из папки, а затем gzip сожмет этот архивный файл.

Хорошо, что вы можете выполнить оба эти действия в одной команде, используя опцию z. Команда выглядит примерно так:

Позвольте нам объяснить вам опции, использованные в приведенной выше команде:

Пример использования tar и gzip для сжатия папки

Допустим, у меня есть куча файлов в каталоге. Если мы используем команду du, чтобы получить размер каталога, это 204 КБ.

Теперь, если мы сожмем папку gzip:

Теперь, если мы проверим размер сжатой папки с помощью команды ls, она вряд ли будет 10 КБ.

Имейте в виду при использовании команд tar и gzip

Вы должны отметить пару вещей при использовании команды tar:

Важно указать имя файла в команде, иначе вы увидите эту ошибку:

Если вы вообще не используете опцию -f, вы все равно увидите ошибку, на этот раз другую.

Мы надеемся, что эта команда помогла вам сжать каталог в Linux, и вы также узнали несколько связанных вещей, касающихся tar и сжатия. Теперь, когда вы знаете, как сжимать папку, возможно, вы хотели бы прочитать о том, как извлечь файл tar xz в Linux.

Любые вопросы, предложения простого слова благодарности всегда приветствуются.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: