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 - это один из самых популярных алгоритмов сжатия, который позволяет уменьшить размер файла и сохранить исходный режим файла, владельца и метку времени.
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 .
Главное меню » Операционная система Linux » Как сжать каталог с помощью gzip в Linux
(1 оценок, среднее: 5,00 из 5)Интересно, не правда ли? Команда 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.
Читайте также: