Архивирование и распаковка файлов и каталогов в linux

Работа с архивами в Linux. Часть 1

/ Статьи / Системное / Работа с архивами в Linux. Часть 1 /

Дата публикации: March 19, 2010, 9:10 p.m. Теги: архивы,
Автор: Brainsburn

Работа с архивами в Linux. Утилита TAR. Основные типы архивов. Создание, изменение, распаковка архивов. Работа с большим количеством файлов и архивов одновременно. Массовое переименование файлов.

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

1) В графических программах не сложно разобраться самому 2) Эта статья написана в первую очередь для администраторов или тех, у кого нет возможности (или желания?) по каким-то причинам установить ПО с GUI. 3) Не знаю как вам, а мне приятно осознавать, что для выполнения самых трудных операций над файлами не обязательно прибегать к установке дополнительных тяжелых программных средств, достаточно лишь поближе познакомиться с теми маленькими, но очень мощными программками, которые присутствуют в наших дистрибутивах уже очень много лет 🙂 Tar — стандартное и самое популярное средство для архивирования/распаковки данных в Linux. Я опишу основные опции tar.

v Подробный вывод информации и работе.
f Эта опция позволяет записывать в файл. Т.е. ее нужно указывать всегда как при создании нового архива, так и при распаковке.
c Создание нового архива. Используется вместе с опцией f.
A Добавить файлы в архив. Внимание: сжатые архивы (bzip2 или gzip) нельзя изменить! Обновить/добавить файлы можно только в те архивы, которые созданы без сжатия, т.е. например так tar cf архив.tar имя-файла
r Добавить файлы в конец архива.
d Показать различия между архивами.
t Вывести список файлов в архиве. u Добавить в архив только те файлы, что новее уже существующих в архиве. x Извлечь файлы из архива. Вместе с этой опцией надо указывать тип архива. j Указывает тип архива bzip2. z Указывает тип архива gzip. k Не перезаписывать существующие файлы. —keep-newer-files Не перезаписывать существующие файлы, которые новее, чем файлы в архиве. —remove-files Удалить файлы, после добавления их в архив. w Интерактивный режим, в котором tar будет запрашивать подтверждения на каждое действие. X имя-файла Не добавлять в архив файлы, список которых указан в файле «имя-файла».

Добавить файлы в существующий архив.

Добавление файлов в сжатый архив невозможно. Вы можете добавлять файлы только в несжатый архив. Поясню на примере: $ ls итого 8,8M 2,0M 1.djvu 1,3M 2.djvu создаем несжатый архив $ tar rf 1.tar 1.djvu $ ls итого 11M 2,0M 1.djvu 2,1M 1.tar 1,3M 2.djvu добавляем в него файлы $ tar rf 1.tar 2.djvu $ ls итого 13M 2,0M 1.djvu 3,3M 1.tar 1,3M 2.djvu удаляем несжатый архив, создаем сжатый и пытаемся добавить в него файлы $ rm 1.tar $ tar czf 1.tar.gz 1.djvu $ ls итого 11M 2,0M 1.djvu 2,0M 1.tar.gz 1,3M 2.djvu $ tar rf 1.tar.gz 2.djvu tar: Невозможно обновить сжатые архивы tar: Неисправимая ошибка: завершение работы
На самом деле вы, конечно, можете «обновить» сжатый архив, добавив в него файлы. Но программы, которые это делают, всего-лишь распаковывают существующий архив и создают новый с учетом файлов, которые надо добавить. Следует понимать, что между архивированием и сжатием файлов есть большая разница. К примеру, вы можете создать несжатый архив из многих файлов командой tar cf archive.tar documents/ , если надо быстро передать это кому-то как единый файл. Но на современных компьютерах можно не экономить и сжимать файл самым быстрым способом. Например, насколько мне известно, gzip сжимает/разжимает быстрее всего.

Как узнать тип архива?

Узнать тип архива в Linux поможет утилита file, которой в качестве аргумента надо передать имя файла. Утилита file определяет тип файла по содержимому а не по имени файла. $ file 1.tar 1.tar: POSIX tar archive (GNU) # 1.tar — несжатый архив $ file 1.tar.gz 1.tar.gz: gzip compressed data, from Unix # 1.tar.gz — архив gzip $ file 1.tar.bz2 1.tar.bz2: bzip2 compressed data # 1.tar.bz2 — архив bzip2 $ file 1.zip 1.zip: Zip archive data # 1.zip — архив zip

Просмотреть список файлов в архиве.

Чтобы просмотреть список файлов в архиве, используйте опцию t. $ tar tf архив.tar.gz 1.djvu scr.gif
Несколько простых примеров работы с архивами в GNU/Linux
Имеется несколько файлов, находящихся в одном каталоге, над которыми мы будем работать: $ ls итого 8,8M 2,0M 1.djvu 1,3M 2.djvu 1,1M 3.djvu 1,5M 4.djvu 3,0M 5.djvu

Создать архив из одного файла, сжатый GZIP

$ tar vczf 1.tar.gz 1.djvu Создать архив из двух файлов, сжатый BZIP2 $ tar vcjf 1.tar.bz2 1.djvu 2.djvu Архивировать каталог documents вместе со всем его содержимым как GZIP архив $ tar vczf docs.tar.gz documents/ Распаковать в текущий каталог архив GZIP $ tar vxzf 1.tar.gz Распаковать в текущий каталог архив BZIP2 $ tar vxjf 1.tar.bz2 Распаковать архив GZIP в каталог documents/new/ $ mkdir documents && mkdir new $ tar vxzf 1.tar.gz -C documents/new/

Создание бэкапа системы в Linux.

Я не хочу останавливаться на этом моменте, т.к. это тема отдельной статьи. Скажу лишь, что при архивировании всей системы ( / ) нужно учитывать точки монтирования файловых систем и такие виртуальные файловые системы как /proc и /dev . Также вам пригодится опция —ignore-failed-read , с ней tar не будет останавливаться в случае если встретит файл, который он не может прочитать. Опция —one-file-system тоже может быть полезна — она указывает Tar-у, чтобы он не выходил за пределы одной файловой системы. Это нужно, если вы архивируете корень, когда надо пропусить /proc и /dev . Создайте текстовый файл, в котором перечислите список того, что архивировать НЕ надо. Это могут быть каталоги tmp, файлы логов и даже сам файл с бэкапом. Имя файла допишите как аргумент к опции —exclude-from. Например, так —exclude-from=list.txt . По поводу выбора «сжимальщика» — gzip использовать вольготнее чем bzip2, т.к. Сжимает он намного быстрее (до 80%), проигрывая в размере архива примерно на 10-20%.

Создание множества архивов.

К примеру, есть такой список файлов $ ls итого 8,2M 1,4M 1.djvu 1,3M 2.djvu 1,1M 3.djvu 1,5M 4.djvu 3,0M 5.djvu Нам надо сделать из этого 1.tar.gz 2.tar.gz 3.tar.gz и т.д.
Для этого можно воспользоваться конструкцией for i in список; do команда; done . Например, так: $ for i in `ls`; do tar vczf $i.tar.gz $i; done В этом случае имена получившихся будут иметь такой вид имя-файла.tar.gz, т.е. 1.djvu.tar.gz .Нет ничего страшного в том, что в имени архива есть «расширение» того файла, который в архиве лежит, т.к. В Linux изначально нет никаких «расширений» и, проще говоря, .tar.gz — всего-лишь часть имени файла. А тип файла частенько правильнее узнать утилитой file .

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

$ find . -type f -exec tar vczf '{}.tar.gz' '{}' ; Он будет работать даже если в именах файлов содержатся пробелы и спецсимволы. $ ls -1 1 heh.djvu 2 huh.djvu 3 ой, хах,=упс.djvu Ъ ужас.djvu $ find . -type f -exec tar czf '{}.tar.gz' '{}' ; $ ls -1 1 heh.djvu 1 heh.djvu.tar.gz 2 huh.djvu 2 huh.djvu.tar.gz 3 ой, хах,=упс.djvu 3 ой, хах,=упс.djvu.tar.gz Ъ ужас.djvu Ъ ужас.djvu.tar.gz Не забудьте про опцию -type f утилиты find. Чтобы понять, зачем она нужна, выполните этот же скрипт без нее и затем выполните команду ls -a =)

Массовое переименование файлов в Linux

А вообще, старайтесь не использовать пробелы в именах файлов. Следующая конструкция переименовывает все файлы в текущем каталоге, заменяя пробелы на символы подчеркивания «_»: $ find . -type f | while read i; do mv «$i» «$(echo «$i» | tr ' ' _)»; done Пример использования массового переименования файлов с заменой пробелов на символы подчеркивания: $ ls -1 1 heh.djvu 2 huh.djvu 3 ой, хах,=упс.djvu Ъ ужас.djvu $ find . -type f | while read i; do mv «$i» «$(echo «$i» | tr ' ' _)»; done $ ls -1 1_heh.djvu 2_huh.djvu 3_ой,_хах,=упс.djvu Ъ_ужас.djvu Приведенная конструкция заменит пробелы на символы подчеркивания в именах файлов не только текущего но и всех вложенных каталогов. Если вам нужно переименовать файлы только в текущем каталоге, добавьте опцию -maxdepth 1 : $ find . -maxdepth 1 -type f | while read i; do mv «$i» «$(echo «$i» | tr ' ' _)»; done

Распаковка нескольких архивов.

Если вам надо разархивировать сразу много архивов, вы можете воспользоваться этим. $ find . -maxdepth 1 -name «*.tar.gz» -type f -exec tar vxzf {} ; Эта команда найдет и распакует все архивы .tar.gz в текущем каталоге. Если нужно распаковать также и архивы в подкаталогах, надо убрать опцию -maxdepth 1

Источник: http://zenux.ru/articles/23/

Архиваторы Linux. Создание и распаковка архивов в Linux

3 июня 2018 г.

Tar

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

Поэтому чаще всего эти программы используются вместе. tar создает несжатый архив, в который помещаются выбранные файлы и каталоги, при этом сохраняя некоторые их атрибуты (такие как права доступа). После этого полученный файл *.tar сжимается архиватором, например, gzip. Вот почему архивы обычно имеют расширение .tar.gz или .tar.

bz2 (для архиваторов gzip и bzip2 соответственно)

Опции tar:

c — создание нового архива (сокращение от create)v — выдача дополнительных сообщений в процессе работы программы (сокращение от verbose)f — создание файла на диске.z — использовать для сжатия GZipj — использовать для сжатия BZip2

x — распаковать архив

Примеры использования :

Создание:

Данная команда создаст архив с именем archive.tar, вложив в него содержимое папки ./log.

tar -cf archive.tar ./log/

Так же можно передавать маску файлов, например такая команда:

tar -cf logs.tar ./log/*.log

Что бы создать архив с помощью gzip нужно указать опцию -z

tar -czf logs.tar.gz ./log/

Распаковка:

Для распаковки архива Tar необходимо воспользоваться ключом -x:

tar -xf logs.tar.gz

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

Просмотр содержимого архива:

Для просмотра содержимого архивов можно использовать ключ -t:

tar -tf logs.tar.gz

Zip

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

Опции zip:

r — рекурсивно обходить каталоги0-9 — 0 только архивировать, без сжатия, 9 наилучший степень сжатияe — шифровать файлы

x — «/var/log/apt/*» — опция, позволяющая исключить указанную папку или файл из архива

Примеры использования :

Создание:

Чтобы сжать файл с помощью zip, введите:

zip -r logs.zip ./log/

Распаковка:

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

unzip logs.zip

Если необходимо распаковать в конкретную папку, то для этого используется параметр –d. Например:

unzip logs.zip -d /tmp

Просмотр содержимого архива:

Для просмотра содержимого архивов можно использовать ключ -l:

unzip archive -l

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

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

На этом сайте будут публиковаться статьи и заметки на интересные для меня темы: о веб-программировании, управлении проектами и электронике.

Всегда открыт для сотрудничества. Связаться со мной вы можете через форму на странице контакты.

Как настроить UART (COM Port) на Orange Pi Zero

Apache. Расшифровываем сообщения на кириллице в error.log

Установка WiringOP на Orange Pi Zero

Что нужно для того что бы написать JAVA REST API приложение?

Полнотекстовый поиск в Sqlite

© 2014 — 2018 — Блог программиста.
При перепечаке матералов сайта активная гиперссылка на сайт обязательна.

Источник: http://blog-programmista.ru/post/43-arhivatory-linux-sozdanie-i-raspakovka-arhivov-v-linux.html

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

Основным средством архивирования в UNIX (а, следовательно, и в Linux) является комплекс из двух программ — tar и gzip. Овладеть работой с tar и gzip — дело чести любого пользователя Linux, т.к. в таком формате распространяется большая часть программного обеспечения для Unix.

  • Программа tar
  • Программа gzip
  • Программа bz2
  • Программа zip

Программа tar

Программа tar создает архивы, соединяя отдельные файлы в единый архивный файл: Для создания архивного файла на диске следует использовать команду с опцией f:

$ tar -cvf mokshadharma.tar mokshadharma/*
mokshadharma/ch/
mokshadharma/ch/ch174.xml
mokshadharma/ch/ch175.xml
mokshadharma/ch/ch176.xml
mokshadharma/ch01.html
mokshadharma/ch02.html
mokshadharma/ch03.html
mokshadharma/cron.sh
mokshadharma/docbook.xsl
mokshadharma/index.html
mokshadharma/index.xml
mokshadharma/pr01.html
mokshadharma/pt01.html
mokshadharma/style/
mokshadharma/style/style.css

В приведенном примере были использованы следующие опции:

  • c — создание нового архива (сокращение от create);
  • v — выдача дополнительных сообщений в процессе работы программы (сокращение от verbose);
  • f — создание файла на диске.

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

Для распаковки (извлечения) файлов из архива используется команда:

$ tar -xf mokshadharma.tar

В приведенном примере опция v отсутствует и во время распаковки никаких сообщений на экран не выводится.

Подсказку по использованию команды tar можно получить, дав команду:

Программа gzip

Для сжатия архивного файла при архивации часто используется программа gzip:

$ tar -czf mokshadharma.tar.gz mokshadharma/*

Читайте также:  Выпуск oracle virtualbox 5.1.16 с различными исправлениями

Для распаковки архивного файла используется команда:

$ tar -xzf mokshadharma.tar.gz

Программа bz2

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

Работает bzip2 примерно так же, как команда gzip, замещая каждый файл, имя которого задано в командной строке, сжатой версией, добавляя при этом к имени файла суффикс .bz2:

$ bzip2 linuxcookbook_20080518.sql $ ls -F linuxcookbook_20080518.sql.bz2
 

Для распаковки архивного файла используется команда:

$ bunzip2 linuxcookbook_20080518.sql.bz2

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

Программа zip

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

Программа zip позволяет рекурсивно сжимать текущий каталог, добавляя в архив все находящиеся в нём подкаталоги:

$ zip -r mokshadharma.zip mokshadharma adding: mokshadharma/ (stored 0%) adding: mokshadharma/ch02.html (deflated 72%) adding: mokshadharma/pr01.html (deflated 65%) adding: mokshadharma/ch03.html (deflated 68%) adding: mokshadharma/index.html (deflated 60%) adding: mokshadharma/pt01.html (deflated 63%) adding: mokshadharma/ch/ (stored 0%) adding: mokshadharma/ch/ch174.xml (deflated 74%) adding: mokshadharma/ch/ch176.xml (deflated 68%) adding: mokshadharma/ch/ch175.xml (deflated 73%) adding: mokshadharma/docbook.xsl (deflated 63%) adding: mokshadharma/cron.sh (deflated 44%) adding: mokshadharma/index.xml (deflated 65%) adding: mokshadharma/style/ (stored 0%) adding: mokshadharma/style/style.css (deflated 78%) adding: mokshadharma/ch01.html (deflated 73%)

Распаковка файлов выполняется так же просто:

$ unzip mokshadharma.zip
Archive: mokshadharma.zip creating: mokshadharma/ inflating: mokshadharma/ch02.html inflating: mokshadharma/pr01.html inflating: mokshadharma/ch03.html inflating: mokshadharma/index.html inflating: mokshadharma/pt01.html creating: mokshadharma/ch/ inflating: mokshadharma/ch/ch174.xml inflating: mokshadharma/ch/ch176.xml inflating: mokshadharma/ch/ch175.xml inflating: mokshadharma/docbook.xsl inflating: mokshadharma/cron.sh inflating: mokshadharma/index.xml creating: mokshadharma/style/ inflating: mokshadharma/style/style.css inflating: mokshadharma/ch01.html

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

Источник: http://www.linuxcookbook.ru/articles/arhivirovanie

Как архивировать файлы и каталоги, настраивать атрибуты файлов и находить файлы в Linux — LFCS часть 3

Недавно Linux Foundation начал сертификацию LFCS (Linux Foundation Certified Sysadmin), совершенно новую программу, цель которой — предоставить людям со всех уголков земного шара доступ к экзамену, который, если он одобрен, подтверждает, что человек хорошо осведомлен в выполнении от базовых до промежуточных задач администрирования системы Linux. Это включает в себя поддержку уже запущенных систем и сервисов, устранение неполадок и т.д.

Эта статья является 3 частью серии из 20 обучающих статей, здесь, в этой части, мы рассмотрим, как архивировать файлы и каталоги, устанавливать атрибуты файлов и находить файлы в файловой системе, необходимые для экзамена по сертификации LFCS.

Средства архивирования и сжатия

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

Наиболее часто используемой утилитой архивирования в Linux является tar.

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

Утилита tar

Tar объединяет группу файлов в один архив (обычно называемый tar-файлом или tarball).

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

Tar обычно используется с инструментом сжатия, таким как gzip, bzip2 или xz для создания сжатого tarball архива.

Основной синтаксис:

# tar [options] [pathname …]

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

Наиболее часто используемые команды tar

Полный вариант Аббревиатура Описание
 —create  c Создает tar-архив
—concatenate  A Добавляет файлы tar в архив
—append  r Добавляет файлы в конец архива
—update  u Добавляет более новые файлы в архив
—diff or —compare  d Поиск различия между архивом и файловой системой
—file archive  f Используется чтобы заархивировать файл
—list  t Перечисляет содержимое tarball
—extract or —get  x Извлекает файлы из архива

Обычно используемые модификаторы:

Полный вариант Аббревиатура Описание
—directory dir  C Изменение директории каталога перед выполнением операций
—same-permissions  p Сохраняет исходные разрешения
—verbose  v  Перечисляет все файлы, считанные или извлеченные. Когда эта опция используется вместе с -list, отображаются размеры файлов, права собственности и отметки времени.
—verify  W  Проверяет архив после его записи
—exclude file  —  Исключает файл из архива
—exclude=pattern  X  Исключить файлы, указанные как PATTERN
 —gzip or —gunzip  z Обрабатывает архив через gzip
—bzip2  j Обрабатывает архив через bzip2
—xz  J Обрабатывает архив через xz

Gzip является самым старым инструментом сжатия и обеспечивает наименьшее сжатие, в то время как bzip2 обеспечивает улучшенное сжатие.

Кроме того, xz является самым новым, и (обычно) обеспечивает наилучшее сжатие.

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

Обычно tar-файлы, сжатые этими утилитами, имеют расширения .gz, .bz2 или .xz, соответственно. В следующих примерах мы будем использовать эти файлы: file1, file2, file3, file4 и file5.

Группировка и сжатие с помощью gzip, bzip2 и xz

Сгруппируйте все файлы в текущем рабочем каталоге и сожмите полученный пакет с помощью gzip, bzip2 и xz (обратите внимание на использование регулярного выражения, которое указывает, какие файлы должны быть включены в архив).

# tar czf myfiles.tar.gz file[0-9] # tar cjf myfiles.tar.bz2 file[0-9] # tar cJf myfile.tar.xz file[0-9]

Перечисление содержимого tarball и обновление/добавление файлов в пакет

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

# tar tvf [tarball]

Выполните любую из следующих команд:

# gzip -d myfiles.tar.gz [#1] # bzip2 -d myfiles.tar.bz2 [#2] # xz -d myfiles.tar.xz [#3]

Затем:

# tar —delete —file myfiles.tar file4 (deletes the file inside the tarball) # tar —update —file myfiles.tar file4 (adds the updated file)

После этого:

# gzip myfiles.tar [ if you choose #1 above ] # bzip2 myfiles.tar [ if you choose #2 above ] # xz myfiles.tar [ if you choose #3 above ]

В заключение,

# tar tvf [tarball] #again

И сравните дату и время изменения файла с той информацией, что мы получили и ранее.

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

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

Возможно, вашей первой мыслью стало исключить из резервной копии все файлы с расширением .mp3 или .mp4 (или другими расширениями).

Что делать, если у вас есть хитрый пользователь, который может изменить расширение на .txt или .bkp, в таком случае ваш подход не принесет вам много пользы.

Чтобы обнаружить аудио- или видеофайлы, вам необходимо проверить его тип файла. Следующий сценарий оболочки выполнит эту работу:

#!/bin/bash # Pass the directory to backup as first argument. DIR=$1 # Create the tarball and compress it. Exclude files with the MPEG string in its file type. # -If the file type contains the string mpeg, $? (the exit status of the most recently executed command) expands to 0, and the filename is redirected to the exclude option. Otherwise, it expands to 1. # -If $? equals 0, add the file to the list of files to be backed up. tar X

Источник: http://blog.sedicomm.com/2018/07/23/kak-arhivirovat-fajly-i-katalogi-nastraivat-atributy-fajlov-i-nahodit-fajly-v-linux-lfcs-chast-3/

Как создать архив в Linux Mint и как распаковать архив?

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

Для начала давайте разберем несколько популярных типов архивов, которые есть в Linux, так как пользователи Windows с некоторыми из них, наверное, не знакомы, тем более что понятие архив в Linux немного отличается от распространённого понятия архива в Windows.

Содержание

Типы архивов в Linux

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

В Linux архивирование — это немного другой процесс, а точнее он разделяется на два.

Первый, объединение нескольких файлов в один – это архивирование, второй – это сжатие (компрессия) этих файлов с целью уменьшения их размера.

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

То, что файл является архивом, Вы можете узнать по его расширению, вот самые часто встречающиеся расширения архивов в Linux:

  • .tar – архив создан стандартной программой tar без сжатия данных;
  • .tar.gz – архив tar, сжатый с помощью gzip;
  • .tar.bz2 – архив tar, сжатый с помощью bzip2;
  • .zip – архив со сжатием, созданный программой ZIP;
  • .7z – архив со сжатием, созданный программой 7Zip.

Я не указал тип .rar, так как в Linux, в отличие от Windows, данный тип архива используется редко, и по умолчанию возможность работать с rar архивами в Linux отсутствует. Но добавить возможность работать с rar в Linux мы, конечно же, можем, ниже в статье я покажу, как добавляется данный функционал в Linux Mint.

Создание архива в Linux Mint

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

Но как Вы знаете, Linux Mint – это система, которая ориентирована на обычных пользователей, поэтому в ней по умолчанию есть стандартная программа с графическим интерфейсом, которая умеет работать с архивами, она так и называется «Менеджер архивов».

Запустить данную программу можно из меню Mint, например, «Меню -> Стандартные -> Менеджер архивов».

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

Примечание! В качестве примера в статье используется версия Linux Mint 19 MATE.

Простой способ создания архива в Linux Mint

Архив в Linux Mint можно создать очень легко, для этого необходимо всего лишь щелкнуть правой кнопкой мыши по файлу или папке, и нажать пункт «Сжать».

Затем по умолчанию нам будет предложено создать архив .tar.gz (это самый распространённый тип архива в Linux).

Но Вы можете изменить тип создаваемого архива, указав нужный Вам тип в соответствующем поле (выпадающий список), например, ZIP, 7z или любой другой из представленного перечня.

Здесь Вы также можете задать название итогового архива и папку расположения. Для начала процесса архивирования нужно нажать кнопку «Создать».

В итоге, в моем случае, в той же папке создался файл-архив Test.tar.gz

Если Вам нужно заархивировать несколько файлов, то Вы выделяете их все, и точно также вызываете меню и нажимаете «Сжать».

Создание архива 7z с помощью терминала в Linux Mint

Как уже отмечалось, архивы в Linux можно создавать и с помощью терминала, давайте для примера создадим архив 7z, используя терминал.

Данный тип архива создается утилитой с таким же названием 7z, для этого запускаем терминал, например, с помощью ярлыка на панели или из меню Mint.

Затем, для того чтобы создать архив Test.7z, который будет включать все тот же файл Test, необходимо выполнить следующую инструкцию

7z a /home/user/Документы/Test.7z /home/user/Документы/Test

В данной инструкции сначала идет название утилиты, т.е. 7z, затем команда a, которая говорит, что нам нужно создать архив, потом мы указываем название итогового архива, включая путь, где его сохранить.

В заключение мы указываем файл, который необходимо заархивировать, также включая путь к этому файлу (я везде указал путь к каталогу «Документы», который расположен в пользовательской папке).

Если все хорошо, то, когда утилита завершит свою работу, она выдаст сообщение «Ок».

Чтобы не указывать пути к каталогам, можно сразу перейти в нужный каталог командой cd. Например, в моем случае команда выглядела бы вот так:

cd /home/user/Документы/

А после перехода в контекст конкретного каталога, при запуске утилиты 7z, можно указывать только названия файлов, т.е. без путей.

7z a Test.7z Test

В итоге в папке, которую я указал, создался архив Test.7z.

Распаковка архива в Linux Mint

Для того чтобы распаковать архив в Linux Mint, можно использовать:

  • Менеджер архивов (функционал «Распаковать»);
  • Контекстное меню, вызванное кликом правой кнопки мыши по архиву;
  • Терминал Linux.
Читайте также:  Релиз vivaldi 1.8 с улучшенной историей

Сейчас давайте рассмотрим несколько способов распаковки архивов в Linux Mint.

Простой способ распаковки архива в Linux Mint

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

Как распаковать архив в Linux Mint с помощью терминала?

Если Вы захотите распаковать архив в Linux с помощью терминала, то команды для распаковки будут выглядеть следующим образом

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

cd /home/user/Документы/

Распаковка 7z архива программой 7Zip

7z x Test.7z

Как видите, для распаковки архива утилиту 7z необходимо использовать с командой x.

Как распаковать архив RAR в Linux Mint?

Для того чтобы иметь возможность распаковывать архивы rar в Linux Mint, необходимо установить пакет p7zip-rar для приложения 7Zip, таким образом, дополнительных программ, для распаковки rar архивов, устанавливать не требуется, т.е. нужно только расширить функционал 7Zip.

Чтобы установить пакет p7zip-rar, необходимо в терминале Linux выполнить следующую команду (потребуется ввести пароль администратора).

Команда для установки пакета p7zip-rar

sudo apt-get install p7zip-rar

После установки этого пакета Вы сможете распаковывать файлы rar программой 7Zip, менеджером архивов в графическом интерфейсе, а также из контекстного меню «Распаковать», т.е. точно так же, как и другие типы архивов.

Например

7z x Test.rar

Теперь Вы знаете, как создаются и распаковываются архивы в операционной системе Linux Mint, надеюсь, материал был Вам полезен, пока!

Источник: https://info-comp.ru/drugieopersistemi/674-create-archive-in-linux-mint.html

Работа с архиватором tar в Linux

Архиватор tar — наиболее распространенный архиватор, используемый в Linux-системах.

Я для вас (и себе на памятку) решил на русском языке привести основные, наиболее ходовые применимые в «быту» примеры создания и распаковки архивов, постаравшись разжевать для простыми и подробными пояснения, что да как. А также постарался частично перевести на русский язык использование некоторых опций. Казалось бы, что тут сложного с этими архивами, уж что, что, а это плевое дело.

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

Но на практике все просто, слишком у нас много иных забот, чтобы в голове держать все то, что мы когда либо в жизни делали, верно? Ну для чего нам тогда всякие книги, заметки и блокноты? То то! 🙂

Итак. Здесь на пожарный официальный мануал GNU tar:
https://www.gnu.org/software/tar/manual/tar.txt

На всякий пожарный мануал Tar для FreeBSD
freebsd.org tar manual

В самом низу статьи еще один мануал, более краткий, выдернутый из Debian 9.

Ну а мы переходим к насущному..

Используемые параметры (ключи, опции) tar

Можно использовать любые ключи, как короткие, так и длинные, то есть из первого столбца или из второго. Некоторые ключи не существуют в коротком виде, в таком случае необходимо использовать только длинные ключи.

-A —catenate,—concatenate Присоединение tar-файлов к архиву.
-b Использовать 512 байт записи в I/O блоках.
-c —create Создать архив.
-C —directory=DIR Указать место назначения для извлечения содержания указанного архива. Измените DIR перед выполнением каких-либо операций. Эта опция чувствительна к порядку, т. е. она влияет на все последующие опции.
-d —diff,—compare Операция сравнения архива с заданной файловой системой.
—delete Удалить из архива. Аргументы содержат имена элементов архива, которые необходимо удалить. Как минимум нужно дать один аргумент. Этот параметр не работает с сжатыми архивами. Не существует короткий эквивалент ключа.
-f  —file=ARCHIVE Создать файл (в противном случае выход идет к терминалу). Измените ARCHIVE перед выполнением каких-либо операций.
-g —listed-incremental=FILE Инкрементный режим архивированаия. Новый GNU формат.
-G —incremental Инкрементный режим архивированаия. Старый GNU формат. При использовании с параметром '-create', создается инкрементальный архив без создания моментального снимка. Таким образом, невозможно создать несколько уровней инкрементных резервных копий с опцией '—incremental'.
—ignore-failed-read Не завершать работу, если некоторые файлы не удалось прочитать. Этот параметр действует только во время создания. Предупреждения об ошибках могут быть подавлены опцией '—warning=failed-read'.
-j Использовать сжатие bzip2.
-J Использовать сжатие xz.
-k Не перезаписывать существующие файлы.
-lzma Использовать сжатие lzma.
-m —touch Не восстанавливать время модификации (только в режиме x). При создании архива время модификации всегда сохраняется.
-O Записать записи entries на stdout (не восстановит диск).
-p —preserve-permissions,—same-permissions Восстанавливать права доступа к файлам (только в режиме x). Попытка восстановить полные разрешения, включая владельца, режимы файлов, списки ACL, расширенные атрибуты и расширенные флаги файлов, если они доступны, для каждого элемента извлеченного из архива (игнорирует маску). Этот параметр заставляет «tar» устанавливать режимы (разрешения доступа) на извлеченные файлы точно так же, как было записано в архиве. Если этот параметр не используется, текущая установка «umask» ограничивает разрешения на извлеченные файлы. Этот параметр по умолчанию включен, когда «tar» выполняется суперпользователем.Этот параметр не имеет смысла с '-list' ('-t').
-P —absolute-names Сохранить имена путей. При создании архивов не удаляются ведущие косые черты из имен файлов. По умолчанию абсолютные имена путей (имена, начинающиеся с символа/) удаляют основную косую черту как при создании архивов, так и при извлечении из них. Кроме того, Tar откажется распаковывать архивные файлы, чьи имена содержат '..' или чей целевой каталог будет изменен с помощью символической ссылки. Этот параметр отключает такое поведение. Обычно при создании архива 'tar' удаляет начальный символ '/' из имен членов, а также при извлечении из архива 'tar' имена, если у них есть начальный символ '/' или внутренний '..'. Эта опция отключает это поведение.
-r —append  Добавление файла в архив.tar -rf archive.tar add.txt
—strip-components=NUMBER Удаляет N ведущих компонентов из имен файлов при извлечении.
-S —sparse Если файл окажется разреженным, он будет специально обработан, что позволит уменьшить объем будущего архива. Этот параметр имеет смысл только при создании или обновлении архивов. Это не влияет на извлечение. Однако имейте в виду, что опция '-sparse' может представлять серьезный недостаток. Чтобы определить содержание файла, возможно, придется прочитать его перед попыткой архивирования, поэтому в целом файл может быть прочитан дважды. Такое поведение зависит от вашей ОС или файловой системы, которая не поддерживает функцию 'SEEK_HOLE/SEEK_DATA'. Тем не менее, рекомендуется использовать '— sparse ' при выполнении резервного копирования файловой системы, чтобы избегать архивирования развернутых форм файлов, хранящихся в системе. Вы можете быть уверены, что архив никогда не будет занимать больше места на носителе, чем файлы на диске.
-t Получить оглавление (содержание) из архива (вывести список файлов).
-u —update Добавить в архив файлы, которые являются более новыми, чем соответствующая копия в архиве. Аргументы имеют то же значение, что и с параметрами -c и -r.
-v  —verbose Вывод списка упакованных файлов в процессе работы.
-w Интерактивный режим.
-W Опция служит для проверки архива.
-x —extract,—get Извлечение файлов.
-z —gzip, —gunzip,—ungzip Использовать сжатие gzip.

Создать архив tar.gz

# Задача: Создать архив tar.gz с сжатием gzip. # # Переходить в нужный каталог не обязательно, команду можно выполнить из любого места. # # 1. Указываем ключи -czf. # 2. Указываем полный путь и название нового архива. # 3. Указываем полный путь к директории источнику. # # В результате, в директории /archives создастся архив new.tar.gz с содержимым # каталога /home/documents. tar -czf /archives/new.tar.gz /home/documents

Создать бекап tar.gz с сохранением путей и прав доступа

# Задача: Создать бекап tar.gz с сжатием gzip. # # Переходить в нужный каталог не обязательно, команду можно выполнить из любого места. # # 1. Указываем ключи -cPzf. # 2. Указываем полный путь и название нового архива. # 3. Указываем полный путь к директории источнику. # # В результате, в директории /archives создастся архив new.tar.gz с содержимым # каталога /home/user/site. tar -cPzf /backups/new.tar.gz /home/user/site

Распаковать архив tar.gz в текущую директорию

# Задача: Распаковать архив tar.gz в текущую директорию. # # 1. Переходим в нужный каталог. # 2. Указываем ключи -xzf. # 3. Указываем полный путь к архиву источнику. # # В результате выполнения, содержимое архива archive.tar.gz распакуется в директории, # в которой мы сейчас находимся, в данном случае это будет в /home/here. # Переходим в нужный каталог cd /home/here # Распаковываем в текущий каталог содержимое, указав полный путь к архиву источнику. tar -xzf /pub/downloads/archive.tar.gz


Распаковать архив tar.gz в указанную директорию

# Задача: Распаковать архив tar.gz в указанную директорию. # # Переходить в нужный каталог не обязательно, команду можно выполнить из любого места. # # 1. Указываем ключи -xzf. # 2. Указываем полный путь к архиву источнику. # 3. Указываем полный путь места назначения с помощью ключа -C. # # В результате выполнения, содержимое архива archive.tar.gz распакуется в # указанный каталог, в данном случае в директорию /home/here. tar -xzf /pub/downloads/archive.tar.gz -C /home/here


Распаковать содержимое архива tar.gz  в текущую директорию с сохранением прав доступа

# Задача: Восстановить содержимое архива с сохранением/восстановлением прав доступа. # # Чтобы распаковать содержимое архива в таком режиме, добавляем ключ -p. # # 1. Переходим в нужный каталог. # 2. Указываем ключи -xzpf. # 3. Указываем полный путь к архиву источнику. # # В результате выполнения команды, содержимое архива backup.tar.gz распакуется с # восстановленными правами доступа, которые ранее были на момент архивации файлов. # Содержимое архива archive.tar.gz распакуется в директории, в которой мы сейчас # находимся, в данном случае это будет в /home/here. # Переходим в нужный каталог cd /home/here # Распаковываем в текущий каталог содержимое, указав полный путь к архиву источнику. tar -xzpf /pub/downloads/backup.tar.gz


Распаковать содержимое архива tar.gz в указанную директорию  с сохранением прав доступа

# Задача: Восстановить содержимое архива с сохранением/восстановлением прав доступа. # # Чтобы распаковать содержимое архива в таком режиме, добавляем ключ -p. # # 1. Указываем ключи -xzpf. # 2. Указываем полный путь к архиву источнику. # 3. Указываем полный путь места назначения с помощью ключа -C. # # В результате выполнения команды, содержимое архива backup.tar.gz распакуется с # восстановленными правами доступа, которые ранее были на момент архивации файлов. # Содержимое архива archive.tar.gz распакуется в указанный каталог, в данном случае # в директорию /home/here. tar -xzpf /pub/downloads/backup.tar.gz -C /home/here


Восстановить содержимое архива tar.gz  с сохранением путей и прав доступа

# Задача: Восстановить содержимое архива с сохранением путей и прав доступа. # Этот способ идеальное средство для бекапа и восстановления файлов. # Данный режим не инкрементный, но поддерживается также не только Linux, но # и в FreeBSD. Примечание: в FreeBSD не поддерживается инкрементный режим. # # Чтобы распаковать содержимое архива с сохранение путей и прав доступа, добавляем # ключ -p для восстановления прав доступа, а также ключ -P для восстановления иерархии # каталогов от корня. Данный ключ не удаляет ведущие косые черты из имен элементов. # # 1. Указываем ключи -xPzpf. # 2. Указываем полный путь к архиву источнику. # # В результате выполнения команды, содержимое из архива backup.tar.gz распакуется в том виде и # структуре с восстановленными правами доступа, которые ранее были на момент # архивации. По мере восстановления файлов, иерархия каталогов (в случае отсутствия) будет # воссоздана с нуля от самой корневой директории. Совпадающие на пути файлы будут # заменены/восстановлены, существующие иные файлы не будут затронуты. # # Примечание: в данном режиме с ключем -P нельзя одновременно использовать ключ -C, то есть # нельзя указать каталог назначения. Это просто не сработает, все равно будет восстановлена # исходная структура каталогов и файлов. Если хотите указать свой каталог для восстановления, # просто удалите опцию -P из запроса. tar -xPzpf /pub/downloads/backup.tar.gz


Распаковать архив в указанный каталог с сохранением прав доступа, но откинув например три начальные директории (Извлечь отдельную ветку каталогов)

# Задача: Извлечь отдельную ветку каталогов. # # Чтобы распаковать часть иерархии архива (с сохранение прав доступа также добавлен ключ -p), # мы будем использовать новую дополнительную опцию '—strip-components=NUMBER', где значение # NUMBER, это количество отброшенных (слева) начальных элементов. # # В архиве /archives/sitebk.2017.09.07.tar.gz: # /usr/home/user/virtual/site # Из архива будет извлечено в директорию /home/here: # virtual/site # tar -xzpf /usr/sitebk.2017.09.07.tar.gz —strip-components=3 -C /home/here

Добавить файл в архив tar

# Добвляем к архиву archive.tar файл add.txt. # Не забываем про ключ -P, если нужно. tar -rf archive.tar add.txt

Оригинальный MAN GNU tar Debian

Источник: https://sageleo.com/article/813/rabota-s-arhivatorom-tar-v-linux/

Как разархивировать файлы в Ubuntu Linux

Работа с архивами — часть повседневной жизни пользователя компьютера. Архивы используются для уменьшения занимаемого места на диске, хранения многих файлов в одном, напротив — разделения большого файла на несколько и даже для шифрования.

Для тех, кто хочет узнать об архивах ещё больше.

Казалось бы, уже давно проблем быть не должно с архивацией/разархивацией, однако, до сих пор можно встретить файл, запакованный в странном формате, о котором система и не слышала. Ниже описаны консольные команды, которые помогут Вам разархивировать файл в Linux.

Самый «простой» формат, который может Вам встретиться — ZIP. Распаковать его можно командой unzip:

unzip file.zip

В мире Linux/Unix довольно распространены TAR архивы (tar.gz, tar.bz2 и так далее):

tar xvf file.tar.*

Tar архивы интересны тем, что на самом деле, сам tar не сжимает. Он создаёт файл, в котором уже хранятся другие файлы, а этот файл уже можно и сжать. Этим занимаются обычно gzip или bzip2. Однако, tar умеет определять — чем сжали его файл и может распаковать. Ключи в примере:

  • x — извлечение файлов из архива.
  • f — использовать файл.
  • v — печатать на консоль информацию о процессе.
Читайте также:  Терминал линукс

Если же у на не tar, а просто gz (gzip) файл, распакуем его командой:

gunzip file.gz

Аналогично с BZ2 — разархивируем с помощью:

bunzip2 file.bz2

Пользователи Windows любят использовать формат RAR, видимо, из-за популярного архиватора WinRAR. Пользователи Linux же могут без проблем разархивировать и rar-файлы:

unrar file.rar

Возможно, потребуется установить программу unrar перед этим (sudo apt-get install unrar).

Могут встретиться и файлы XZ. Разархивируем командой

unxz file.xz

архивируем

xz —decompress file.xz

XZ умеет разархивировать файлы и LZMA формата:

xz —format=lzma —decompress file.lz # для .lz файлов

Для 7Z-файлов используем:

7za e file.7z

Нужно установить p7zip до этого (sudo apt-get install p7zip).

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

file file.unknown

Например:

$ file server.jjj server.jjj: Zip archive data, at least v2.0 to extract

Источник: https://900913.ru/2014/07/31/unpack-archive/

В.А.Костромин, «Linux для пользователя». Команды архивирования файлов

Библиотека сайта rus-linux.net

Предыдущий раздел Оглавление Следующий раздел

При работе с Linux вы, может быть, еще не скоро встретитесь с необходимостью работать с большинством консольных команд, поскольку имеются такие оболочки, как Midnight Commander или графические оболочки типа KDE. Но с командами архивирования (точнее, разархивирования) вам работать придется обязательно, хотя бы потому, что вы будете часто встречать архивированные файлы в Интернете.

Основным средством архивирования в UNIX (а, следовательно, и в Linux) является комплекс из двух программ — tar и gzip. Хотя никто не запрещает пользоваться arj, pkzip, lha, rar и т. д. — версии этих программ для Linux общедоступны.

Просто уж исторически сложилось, что пользователи Unix чаще применяют именно  tar и gzip, и именно в таком формате распространяется большая часть программного обеспечения для Unix.

Поэтому овладеть работой с tar и gzip — дело чести любого пользователя Linux.

4.7.1. Программа tar

У читателя, привыкшего к архиваторам типа arj, которые собирают файлы в единый архив и сразу «сжимают» их, может возникнуть вопрос «А зачем использовать две программы?” Все дело в том, что tar расшифровывается как Tape ARchiver, он не сжимает данные, а лишь объединяет их в единый файл с последовательным доступом для последующей записи на ленту. По умолчанию этот архивный файл создается на ленточном накопителе, точнее на устройстве /dev/rmt0. Если вы хотите создать архивный файл на диске, то необходимо использовать команду tar с опцией f, после которой указывается имя архивного файла.

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

Таблица 4.5. Основные опции программы tar

Опция

Значение

-A, —catenate, —concatenate

Добавляет файлы в существующий архив

-c, —create

Создает новый архив

-d, —diff, —compare

Найти различия между архивом и файловой системой

—delete

Удалить из архива (не может использоваться с магнитной лентой!)

-r, —append

Дописывает файлы в конец архива

-t, —list

Выводит список файлов архива

-u, —update

Добавляет только файлы, которые новее, чем имеющаяся в архиве копия

-x, —extract, —get

Извлечь файлы из архива

Если вы работаете с файлами архивов на дисках, а не с ленточным устройством, то, очевидно, обязательной будет и опция f. Другие опции не являются обязательными, они служат только для конкретизации задания программе. Например, опция v заставляет программу выводить список обрабатываемых файлов.

Однобуквенные опции программы tar могут перечисляться друг за другом (вы увидите это в приводимых ниже примерах).

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

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

[user]$ tar -cf имя_архива файл1 файл2 …,

где опция -c сообщает программе, что необходимо создать (create) архив, а опция f говорит о том, что архив должен создаваться в виде файла (имя которого должно следовать сразу за этой опцией).

В именах файлов, которые сохраняются в архиве, можно использовать шаблоны имен файлов, в том числе просто символы-заместители * и ?. Благодаря этому можно очень короткой командой отправить в архив сразу много файлов. Например, для того, чтобы создать архив, содержащий все файлы одного из подкаталогов (пусть это будет sub_dir) текущего каталога, достаточно дать команду

[user]$ tar -cvf имя_архива ./sub_dir/*

или даже просто

[user]$ tar -cvf имя_архива sub_dir

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

Заметим, что если в только что приведенном примере вместо * поставить *.

*, то будут сохранены только те файлы, которые расположены непосредственно в подкаталоге sub_dir, а подкаталоги каталога sub_dir архивированы не будут (Примеч.12).

Если в том же примере не указать имя подкаталога, то будут архивироваться все файлы (и подкаталоги) текущего каталога. Но если вы дадите команду следующего вида

[user]$ tar -cvf имя_архива ./.*

то в архиве будут сохранены не только все файлы (и подкаталоги) текущего каталога, но и файлы из родительского каталога, а хотели ли вы этого?

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

[user]$ tar -xvf имя_архива файлы

Получить список файлов архива можно командой:

[user]$ tar -tf имя_архива | less

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

[user]$ tar -Mcvf /dev/fd0H1440 /каталог

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

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

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

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

[user]$ tar -Mxpvf /dev/fd0H1440

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

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

[user]$ tar -help

При этом, если вы используете русифицированный дистрибутив Linux, например, Black Cat 6.02, то подсказка будет выдаваться по-русски.

4.7.2. Программа gzip

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

[user]$ gzip файл

В командной строке можно указать сразу несколько имен файлов или шаблон имени файла. Но в этом случае каждый из указанных файлов будет заархивирован отдельно (общий архив не создается).

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

[user]$ gzip -d файл_архива

или

[user]$ gunzip файл_архива

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

Перечислим кратко другие полезные опции программы gzip.

Таблица 4.6. Основные опции программы gzip

Опция

Значение

-h, —help

Вызов краткой помощи по использованию программы

-l, —list

Выдает имя файла, содержащегося в архиве, его объем и степень сжатия

-L, —license

Отображает номер версии и лицензию на программу

-N, —name

Сохранять (или восстанавливать) исходное имя и время создания файла

-n, —no-name

Не сохранять (не восстанавливать) исходное имя и время создания файла

-q, —quiet

Подавляет выдачу на экран предупреждающих сообщений

-r, —recursive

Рекурсивно обрабатывать подкаталоги (используется в случае. когда задан шаблон имен обрабатываемых файлов)

-S .suf,

—suffix .suf

Добавить суффикс .suf к имени сжатого файла (вместо добавляемого по умолчанию суффикса gz; но учтите, что при разархивации файлов с суффиксами, отличными от gz, программа вас не поймет)

-t, —test

Протестировать архивный файл

-v, —verbose

Выдача дополнительных сообщений в процессе работы программы

-V, —version

Отобразить версию программы

-1, —fast

Быстрое сжатие

-9, —best

Более высокая степень сжатия

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

[user]$ tar -czf имя_архива шаблон_имен_файлов (или имя_каталога)

Только имейте в виду, что в этом случае суффикс .gz не добавляется автоматически к имени создаваемого архива, поэтому лучше сразу задать имя архива с указанием обеих суффиксов: имя.tar.gz.

4.7.3. Программа bzip2

В последнее время все чаще вместо программы gzip используется архиватор bzip2, который обеспечивает более высокую степень сжатия и работает несколько быстрее. Команда bzip2 обычно не устанавливается автоматически при инсталляции Linux. Но она имеется на дистрибутивном диске в виде rpm-пакета и ее легко установить. (Как это сделать, см. в гл. 10.)

Работает bzip2 примерно так же, как команда gzip, т. е. замещает каждый файл, имя которого задано в командной строке, сжатой версией, добавляя к имени файла суффикс .bz2.

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

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

Это происходит, например, для файлов длиной менее 100 байт, потому что механизм сжатия использует заголовок длиной около 50 байт.

Для файлов, представляющих собой случайную последовательность символов (в том числе для выходных файлов большинства файловых архиваторов) длина файла увеличивается примерно на 0.5%.

Команда bunzip2 (или bzip2 -d) разархивирует указанные в командной строке файлы. Если эти файлы не были созданы программой bzip2, они не будут разархивироваться, будет выдано соответствующее предупреждение. При разархивации bzip2 пытается угадать имя разархивируемого файла по следующим правилам:

  • filename.bz2 заменяется на filename;
  • filename.bz заменяется на filename;
  • filename.tbz2 заменяется на filename.tar;
  • filename.tbz заменяется на filename.tar;
  • любое другое «имя» заменяется на «имя.out».

Опции командной строки для bzip2 очень похожи на опции команды gzip, но все же они не идентичны. Приведу краткую сводку наиболее необходимых в работе опций.

Таблица 4.7. Основные опции программы bzip2

Опция

Значение

-d, —decompress

Принудительная разархивация. Эта опция необходима в силу того, что bzip2, bunzip2 и bzcat — это на самом деле одна и та же программа, которая сама по расширению имени файла принимает решение о том, какое действие надо выполнить над указанным файлом. Опция -d отключает этот механизм и заставляет программу разархивировать указанные файлы

-z, —compress

Принудительная архивация

-t, —test

Проверка целостности указанного файла(ов) без разархивации

-f, —force

Перезапись существующего файла. По умолчанию bzip2 не перезаписывает существующие файлы. Если вы хотите перезаписать существующий файл, надо задать опцию -f

-k, —keep

Сохранять (не удалять) исходные файлы при архивации или разархивации

-s, —small

Снижает требования к объему используемой оперативной памяти за счет снижения скорости архивации. Эту опцию рекомендуется применять на компьютерах с малым объемом ОЗУ (8 Мбайт и меньше)

-q, —quiet

Не выводить малосущественные сообщения

-v, —verbose

Выводить дополнительную информацию в процессе работе (представляет интерес в диагностических целях)

-L, —license,

-V, —version

Отобразить версию программы и лицензионное соглашение

Аргументы командной строки, которым предшествует двойное тире и пробел, трактуются как имена файлов, даже если они начинаются с тире. Например,

[user]$ bzip2 — -myfilename

Я думаю, что приведенных данных достаточно для квалифицированного применения архиваторов tar, gzip и bzip2. За дополнительными сведениями, как всегда, обращайтесь к интерактивной подсказке man. По утилите bzip2 имеется «Bzip2-HOWTO”, который даже переведен на русский язык [П6.4].

Предыдущий раздел Оглавление Следующий раздел

Если вам понравилась статья, поделитесь ею с друзьями:

Источник: http://rus-linux.net/kos.php?name=/book1/gl-04/gl_04_07.html

Ссылка на основную публикацию