Как через командную строку сделать архив

Добавил пользователь Владимир З.
Обновлено: 06.09.2024

Начиная с Windows 10 build 17063 утилита командной строки tar.exe является штатным средством архивирования данных. Утилита tar многие годы являлась основным средством архивирования в ОС семейства Linux и первоначально использовалась для создания архивов на магнитной ленте ( отсюда ее название tar - t ape ar chive ). В настоящее время позволяет создавать архивы на любых носителях и практически, является основным средством хранения файлов и каталогов в одном файле специального формата для ОС семейства Linux/BSD. Главным достоинством формата tar является то, что архив содержит не только сами данные архивируемых файлов, но и информацию о структуре каталогов, владельце, и отметки времени ( время создания, модификации, доступа ). Архиватор tar не выполняет сжатие архивируемых данных, он всего лишь упаковывает множество файлов в один файл, размер которого приблизительно равен суммарному размеру упакованных файлов ( немного больше за счет добавления собственных служебных заголовков ). В Linux для сжатия используются внешние программы (gzip/bzip2/xz/lzma ), в Windows – дополнительные параметры командной строки. Используемая в Windows 10 утилита tar.exe базируется на bsdtar

Общий формат командной строки:

Как это принято в *nix системах, строчные и заглавные буквы в параметрах командной строки различаются. Сначала необходимо задать параметры архивирования:

-c - создать архив.

-r - добавить/заменить файлы в существующем архиве.

-t - отобразить список файлов в архиве.

-u - обновить содержимое архива. В существующем архиве будут заменены только устаревшие файлы.

-x - извлечь файлы из архива.

-f - путь и имя файла архива. По умолчанию – магнитная лента (\\.\tape0)

-v - подробный режим вывода информации на экран.

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

Создание архивов.

Формат командной строки:

tar -c [параметры] [ | | @ | -C

-z, -j, -J, --lzma - параметры сжатия архива - gzip/bzip2/xz/lzma

--exclude - исключить из архивирования файлы соответствующие шаблону pattern

, - файлы и каталоги, добавляемые в архив.

@ - добавить в архив записи из уже существующего архива archive

-C - сделать текущим каталогом каталог dir .

tar -c -f D:\Stordiag.tar D:\StorDiag\*.* - создать архив D:\Stordiag.tar из всех файлов каталога D:\StorDiag\

tar -cvf D:\Stordiag.tar D:\StorDiag\*.* - то же, что и в предыдущем примере, но параметры объединены ( -c –v –f можно использовать как –cvf) и добавлен подробный режим вывода ( -v ).

tar -cvzf D:\123.tar.gz D:\StorDiag\*.* @D:\StorDiag.zip - то же, что и в предыдущем примере, но выполняется сжатие архива методом gzip и к файлам создаваемого архива добавляется содержимое уже существующего архива D:\StorDiag.zip

tar -cvzf D:\123.tar.gz D:\StorDiag\*.reg @D:\StorDiag.zip - то же, что и в предыдущем примере, но для архивирования отбираются файлы с расширением .reg . Действие шаблона поиска файлов не распространяется на содержимое архива @D:\StorDiag.zip

Отображение содержимого архива

Формат командной строки:

tar -t [параметры] [ ]

шаблон - шаблон для выводимого списка файлов. Если не задан – выводится список всего содержимого архива.

tar -tf D:\StorDiag.tar.gz - отобразить содержимое архива D:\StorDiag.tar.gz

Извлечение файлов из архива.

tar -x [параметры] [ ]

шаблон определяет перечень извлекаемых из архива файлов. Если не задан, то извлекаются все.

-k - не перезаписывать существующие файлы.

-m - не восстанавливать отметку времени модификации файлов.

-O - записывать содержимое в stdout (выводить на экран), т.е. не восстанавливать на диск.

-p - восстанавливать разрешения, включая списки доступа (ACLs), владельца (owner), атрибуты файлов.

tar -xvzf D:\StorDiag.tar.gz - извлечь содержимое архива StorDiag.tar.gz в текущий каталог.

tar -xvzf D:\StorDiag.tar.gz *.reg - извлечь только файлы с расширением .reg

tar -xvzOf D:\123.tar.gz *.reg - то же, что и в предыдущем примере, но с выдачей информации на экран.

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

Краткую справку по использованию TAR можно получить по команде:

И соответственно, более полную справку можно получить по команде tar –help или tar –h .

tar linux

Ubuntu

Сегодня речь пойдет о такой вещи как архивация, а именно упаковка и распаковка таких форматов как: tar, gzip, zip и rar в в операционных системах Unix и Linux

нашу статью разобьем на разделы, что бы была удобная навигация.

Архивация в Linux

Хоть Linux и имеет графическую оболочку и даже уже можно скачать графические пакеты для работы с самыми популярными расширениями архиваторов, мы будем рассматривать работу с архивами на уровне консоли (но если кому надо сделаем обзор пакетов для работы не через консоль)

Архивация Tar в Linux

Tar — или как мы его называли архиватором таковым не является, причина тому, логика работы данного инструмента! это всего лишь упаковщик, а если быть точнее то задача tar создать контейнер в формате tar в который она помещает выбранные вами файлы (без сжатия). Но если Вам нужно эти данные ужать или сжать для уменьшения размера архива, тогда применяются дополнительные инструменты такие как Gzip или bzip2 (вы должны были обращать внимания, что скачивая пакеты или файлы они имели странный формат name-file.tar.gz ) Все дело в том, что принцип работы инструмента по сжатию данных, работает только в однопотоковом режиме, поэтому, что бы заархивировать много файлов и их сжать нам необходимо было их упаковать в TAR (один файл), а только потом прогнать через сжатие Gzip или bzip2 поэтому эти инструменты работают как Бонни и Клайд)

Создание архива TAR

Для начала начнем с запаковки архива Tar в Linux/ubuntu, и для этого надо запомнить шаблон или синтаксис команды:

tar [опции] [файлы или папки которые будем упаковывать]

Опции для создания архива tar:

  • c (create) — создать архив
  • f (file) — указать имя архива
  • j (bzip2) — cжать/распаковать архив дополнительно при помощи bzip2
  • z (gzip) — сжать/распаковать архив дополнительно при помощи gzip
  • v (verbose) — выводит список прогресса

tar -cvf newfile.tar /foto

в данной команде мы указали создать архив newfile.tar и запаковать всю папку foto

В списке опций вы заметили два ключа j и z эти ключи используются как для сжатия в архив gzip или bzip2 если вам нужно сделать архивацию с сжатием то применяем следующую команду:

tar -cvjf newfile.tar /foto — создаст архив + сжатие newfile.tar.bz2
tar -cvzf newfile.tar /foto — создаст архив + сжатие newfile.tar.gz

Распаковать архив TAR

рассмотрим синтаксис команды что бы распаковать или разархивировать tar архив в linux/ubunta :

tar [опции] [файлы или папки которые будем распаковывать]

Опции для создания архива tar:

  • x (extract) — извлечь файлы из архива
  • f (file) — указать имя архива
  • j (bzip2) — cжать/распаковать архив дополнительно при помощи bzip2
  • z (gzip) — сжать/распаковать архив дополнительно при помощи gzip
  • v (verbose) — выводит список прогресса
  • С (в верхнем регистре) — указываем альтернативное место для разархивирования файлов

tar -xvjf newfile.tar.bz2 — распаковываем архив в категорию в которой находимся
tar -xvzf newfile.tar.gz -C /home/nibbl/desktop — распаковываем архив на рабочий стол

Общая информация по работе с Tar

  1. tar —help — вызов справки по командам и параметрам
  2. man tar — вызов расширенной документации
  3. официальная документация по команде tar — ссылка

Архивация Zip в Linux

Архиватор zip — это звезда в мире ПО (ну не считая rar) этот формат очень популярен для windows систем и он по умолчанию уже встроен в чистую сборку операционной системы, поэтому только установив виндовус вы уже можете разархивировать файлы в формате zip

но давайте перейдем к делу, в Linux и Unix системах дела обстоят по другому, это формат Tar идет по умолчанию, а вот для zip надо поставить пакет unzip

  1. sudo apt-get update && apt-get upgrade
  2. sudo apt-get install unzip

Создание ZIP архива

Для начала запомним шаблон или синтаксис команды для создания архива zip в linux:

zip [опции] [файлы или папки которые будем упаковывать]

Опции для создания архива tar:

  • r (recurse) — рекурсивное создание архива
  • s (size) — разбивка архива на определенный размер k (kB), m (MB), g (GB) или t (TB)
    пример: zip -s 300m
    на выходе получим:
    file.zip (300 mb, master file)
    file.001.zip (300 mb)
    file.002.zip (300 mb)
    file.003.zip (100 mb)
  • P (password) — запаролировать архив (можно использовать ключ e тогда пароль будете вводить в отдельной строке со звездочками )
    пример: zip -P мойпароль -r file.zip ./home/nibbl/foto
    пример2: zip -er file.zip ./home/nibbl/foto
  • x — исключаем файлы или каталоги из архива
  • 1-9 — степень сжатия (где 1 без сжатия, а 9 лучшее сжатие)

zip –r -9 -P 123 — archive.zip /home/nibbl/desktop/myfile

— данной командой мы заархивировали с сжатием папку myfile создали архив с именем archive.zip и установили пароль на архив 123

Распаковать zip архив

рассмотрим синтаксис команды что бы распаковать или разархивировать tar архив :

Опции для создания архива tar:

  • d (directory) — указать директорию для разархивации
  • l — вывести список файлов в архиве
  • d — удалить определенный файл или каталог из уже сделанного архива
  • v — показывает детальную информацию по файлам в архиве ()

unzip — распаковываем архив в категорию в которой находимся
unzip -d /home/nibbl/desktop — распаковываем архив на рабочий стол


Для создания архивов используется команда zip, которая имеет в своем арсенале более 30 разных опций.

Создание простого zip-архива

Для создания zip-архива в terminal linux, необходимо выполнить команду zip. В первом аргументе, которой указываем имя создаваемого архива, вторым параметром сам файл, который необходимо добавить в zip архив.

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

Добавления в zip-архив директории

Для архивации директории, потребуется ключ, команды zip -r:

Распаковка zip-архива

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

Для архивации директории, потребуется ключ, команды zip -r:

По умолчанию распаковка происходит в директории запуска команды unzip. Чтобы распаковать архив в другую директорию, необходимо указать ключ -d, после которого, указать путь к необходимой директории:


ZIP-файлы — это универсальный архив, обычно используемый в системах Windows, macOS и даже Linux. Вы можете создать zip-архив или распаковать файлы из одного с помощью некоторых общих команд терминала Linux.

Формат сжатого архива ZIP

Благодаря доминированию формата ZIP в области Windows, файлы ZIP, вероятно, являются наиболее распространенной формой сжатых архивов в мире.

zip, unzip и другие утилиты

Возможно, вы уже знаете, что Linux и Unix-подобные операционные системы, такие как macOS, имеют инструменты, позволяющие создавать ZIP-файлы и извлекать из них файлы, называемые zip и unzip . Но есть целый ряд связанных утилит, таких как zipcloak , zipdetails, zipsplit и zipinfo.

Мы проверили некоторые дистрибутивы Linux, чтобы увидеть, включают ли они эти утилиты в стандартную установку. Все утилиты присутствовали в Ubuntu 19.04, 18.10 и 18.04. Они также присутствовали в Манджаро 18.04. Fedora 29 включала zip и unzip , но ни одну из других утилит, и это также относится к CentOS.

Чтобы установить недостающие элементы в Fedora 29, используйте следующую команду:


Чтобы установить недостающие элементы в CentOS 7, используйте следующую команду:


Если какая-либо из утилит zip отсутствует в дистрибутиве Linux, который не был упомянут выше, используйте инструмент управления пакетами этого дистрибутива Linux для установки необходимого пакета.

Как создать ZIP-файл с помощью команды zip

Чтобы создать файл с именем source_code.zip содержащий все файлы исходного кода C и заголовочные файлы в текущем каталоге, вы должны использовать эту команду:


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



Если вы не хотите видеть вывод из zip при создании ZIP-файла, используйте параметр -q (quiet).


Включение каталогов в ZIP-файлы

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


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

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


Установка уровня сжатия

Вы можете установить степень сжатия файлов при их добавлении в ZIP-архив. Диапазон составляет от 0 до 9, где 0 вообще не компрессирует. Чем выше степень сжатия, тем больше времени требуется для создания файла ZIP. Для ZIP-файлов небольшого размера разница во времени не является существенным штрафом. Но тогда, для ZIP-файлов небольшого размера, сжатие по умолчанию (уровень 6), вероятно, достаточно хорошо в любом случае.


Уровень сжатия по умолчанию равен 6. Нет необходимости -6 опцию -6 , но это не принесет вреда.


Максимальный уровень сжатия — уровень 9.


При выборе файлов и каталогов, которые здесь архивируются, разница между отсутствием сжатия (уровень 0) и сжатием по умолчанию (уровень 6) составляет 400 КБ. Разница между сжатием по умолчанию и самым высоким уровнем сжатия (уровень 9) составляет всего 4K.

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

Добавление паролей к ZIP-файлам

Добавить пароли к ZIP-файлам легко. Используйте параметр -e (зашифровать), и вам будет предложено ввести пароль и повторно ввести его для проверки.


Как распаковать ZIP-файл с помощью команды unzip


По мере извлечения файлов они отображаются в окне терминала.


ZIP-файлы не содержат информации о владельце файла. Все извлеченные файлы имеют владельца, назначенного пользователю, который их извлекает.

Как и в zip , у unzip есть опция -q (quiet), поэтому вам не нужно видеть список файлов, когда файлы извлекаются.

Извлечение файлов в целевой каталог

Чтобы файлы были извлечены в определенном каталоге, используйте опцию -d (directory) и укажите путь к каталогу, в который вы хотите извлечь архив.


Извлечение защищенных паролем ZIP-файлов

Если ZIP-файл был создан с паролем, unzip попросит вас указать пароль. Если вы не введете правильный пароль, unzip файлы не удастся.



Исключение файлов


Перезапись файлов

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

Помимо ответа r (переименование), эти ответы чувствительны к регистру.

  1. y: да, переписать этот файл
  2. n: нет, не перезаписывать этот файл
  3. A: Все, переписать все файлы
  4. N: Нет, перезаписать ни один из файлов
  5. r: переименовать, распаковать этот файл, но дать ему новое имя. Вам будет предложено ввести новое имя.


Чтобы заставить unzip перезаписывать любые существующие файлы, используйте опцию -o (перезапись).


Наиболее эффективный способ заменить отсутствующие файлы — unzip только те файлы в архиве, которые не находятся в целевом каталоге. Для этого используйте параметр -n (никогда не перезаписывать).


Глядя внутрь ZIP-файла

Часто полезно и поучительно видеть список файлов внутри ZIP-файла перед его извлечением. Вы можете сделать это с опцией -l (архив списка). Это запускает less чтобы сделать вывод управляемым.



Как мы увидим, есть другие способы заглянуть внутрь ZIP-файла, который предоставляет различные типы информации.

Добавить пароль с помощью команды zipcloak

Если вы создали ZIP-файл, но забыли добавить пароль, что вы можете сделать? Вы можете быстро добавить пароль в ZIP-файл с помощью команды zipcloak . Передайте имя файла ZIP в командной строке. Вам будет предложено ввести пароль. Вам необходимо подтвердить пароль, введя его во второй раз.


Просмотр сведений о файле с помощью команды zipdetails

Команда zipdetails покажет вам много информации о ZIP-файле. Единственный разумный способ обработать количество вывода, которое может дать эта команда, состоит в том, чтобы передать его через less.


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


Поиск внутри файла с помощью команды zipgrep


Просмотр информации с помощью команды zipinfo

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


Слева направо вывод показывает:

  • Файл разрешений
  • Версия инструмента, использованного для создания файла ZIP
  • Исходный размер файла
  • Файловый дескриптор (описан ниже)
  • Метод сжатия (в данном случае дефляция)
  • Данные и отметка времени
  • Название файла и любой каталог
  1. -: если ни один не существует, символ будет дефисом
  2. l: если есть расширенный локальный заголовок, но нет дополнительного поля
  3. x: если расширенного локального заголовка нет, но есть дополнительное поле
  4. X: если есть расширенный локальный заголовок и есть дополнительное поле


Разделить файл командой zipsplit

Опция -n (размер) позволяет вам установить максимальный размер для каждого из новых файлов ZIP. В этом примере мы source_code.zip файл source_code.zip . Мы не хотим, чтобы новые ZIP-файлы были больше 100 КБ (102400 байт).


Выбранный вами размер не может быть меньше размера любого из файлов в ZIP-файле.

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

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