- Команда Tar в Linux (создание и извлечение архивов)
- Синтаксис команды tar
- Создание архива Tar
- Создание архива Tar Gz
- Создание архива Tar Bz2
- Листинг архивов Tar
- Извлечение архива Tar
- Извлечение архива Tar в другой каталог
- Извлечение архивов Tar Gz и Tar Bz2
- Извлечение определенных файлов из архива Tar
- Извлечение файлов из архива Tar с использованием подстановочного знака
- Добавление файлов в существующий архив Tar
- Удаление файлов из архива Tar
- Выводы
- Linux список файлов архива
- 4.7.1. Программа tar
- 4.7.2. Программа gzip
- 4.7.3. Программа bzip2
Команда Tar в Linux (создание и извлечение архивов)
Команда tar создает файлы tar путем преобразования группы файлов в архив. Он также может извлекать архивы tar, отображать список файлов, включенных в архив, добавлять дополнительные файлы к существующему архиву и выполнять различные другие операции.
Изначально Tar был разработан для создания архивов для хранения файлов на магнитной ленте, поэтому получил свое название « T ape AR chive».
В этой статье показано, как использовать команду tar для извлечения, перечисления и создания архивов tar на практических примерах и подробных объяснениях наиболее распространенных параметров tar.
Синтаксис команды tar
Существует две версии tar, BSD tar и GNU tar , с некоторыми функциональными отличиями. В большинстве систем Linux по умолчанию предустановлен GNU tar.
Общий синтаксис команды tar следующий:
- OPERATION — Разрешен и обязателен только один аргумент операции. Наиболее часто используемые операции:
- —create ( -c ) — Создать новый tar-архив.
- —extract ( -x ) — Извлечь весь архив или один или несколько файлов из архива.
- —list ( -t ) — Показать список файлов, входящих в архив
- OPTIONS — Наиболее часто используемые операции:
- —verbose ( -v ) — Показать файлы, обрабатываемые командой tar.
- —file=archive=name ( -f archive-name ) — указывает имя файла архива.
- ARCHIVE_NAME — имя архива.
- FILE_NAME(s) — список имен файлов, разделенных пробелами, для извлечения из архива. Если не указан, извлекается весь архив.
При выполнении команд tar вы можете использовать длинную или короткую форму операций и опций tar . Длинные формы более читабельны, а короткие — быстрее печатать. Опции в длинной форме начинаются с двойного тире ( — ). Опции краткой формы имеют префикс с одинарным дефисом ( — ), который можно опустить.
Создание архива Tar
Tar поддерживает широкий спектр программ сжатия, таких как gzip , bzip2 , lzip , lzma , lzop , xz и compress . При создании сжатых tar-архивов принято добавлять суффикс компрессора к имени файла архива. Например, если архив был сжат с помощью gzip , он должен называться archive.tar.gz.
Чтобы создать tar-архив, используйте параметр -c за которым следует -f и имя архива.
Например, чтобы создать архив с именем archive.tar из файлов с именами file1 , file2 , file3 , вы должны выполнить следующую команду:
Вот эквивалентная команда, использующая параметры полной формы:
Вы можете создавать архивы из содержимого одного или нескольких каталогов или файлов. По умолчанию каталоги архивируются рекурсивно, если не указана опция —no-recursion .
В следующем примере будет создан архив с именем user_backup.tar из user_backup.tar /home/user :
Используйте параметр -v если вы хотите увидеть файлы, которые обрабатываются.
Создание архива Tar Gz
Gzip — самый популярный алгоритм сжатия файлов tar. При сжатии tar-архивов с помощью gzip имя архива должно оканчиваться на tar.gz или tgz .
Параметр -z указывает tar сжимать архив с использованием алгоритма gzip мере его создания. Например, чтобы создать архив tar.gz из заданных файлов, вы должны выполнить следующую команду:
Создание архива Tar Bz2
Еще один популярный алгоритм сжатия файлов tar — это bzip2. При использовании bzip2 имя архива должно оканчиваться на tar.bz2 или tbz .
Чтобы сжать архив с помощью алгоритма bzip2 , вызовите tar с параметром -j . Следующая команда создает архив tar.bz2 из указанных файлов:
Листинг архивов Tar
При использовании с параметром —list ( -t ) команда tar выводит список содержимого архива tar без извлечения его.
Команда ниже отобразит содержимое файла archive.tar :
Чтобы получить дополнительную информацию, такую как владелец файла, размер файла, временная метка, используйте параметр —verbose ( -v ):
Извлечение архива Tar
Большинство архивных файлов в Linux заархивированы и сжаты с использованием формата tar или tar.gz. Важно знать, как извлекать эти файлы из командной строки.
Чтобы извлечь tar-архив, используйте параметр —extract ( -x ), за которым следует имя архива:
Также часто добавляют параметр -v для вывода имен извлекаемых файлов.
Извлечение архива Tar в другой каталог
По умолчанию tar извлекает содержимое архива в текущий рабочий каталог . Используйте —directory ( -C ) для извлечения архивных файлов в определенный каталог:
Например, чтобы извлечь содержимое архива в каталог /opt/files , вы можете использовать:
Извлечение архивов Tar Gz и Tar Bz2
При извлечении сжатых архивов, таких как tar.gz или tar.bz2 , вам не нужно указывать параметр распаковки. Команда такая же, как при распаковке tar архива:
Извлечение определенных файлов из архива Tar
Иногда вместо извлечения всего архива вам может потребоваться извлечь из него только несколько файлов.
Чтобы извлечь определенный файл (ы) из архива tar, добавьте разделенный пробелами список имен файлов, которые нужно извлечь, после имени архива:
При извлечении файлов вы должны —list их точные имена, включая путь, как напечатано с помощью —list ( -t ).
Извлечение одного или нескольких каталогов из архива аналогично извлечению файлов:
Если вы попытаетесь извлечь несуществующий файл, отобразится сообщение об ошибке, подобное следующему:
Извлечение файлов из архива Tar с использованием подстановочного знака
Чтобы извлечь файлы из архива на основе шаблона с подстановочными знаками, используйте переключатель —wildcards и —wildcards шаблон в кавычки, чтобы оболочка не интерпретировала его.
Например, чтобы извлечь файлы, имена которых заканчиваются на .js (файлы Javascript), вы можете использовать:
Добавление файлов в существующий архив Tar
Чтобы добавить файлы или каталоги в существующий tar-архив, используйте —append ( -r ).
Например, чтобы добавить файл с именем newfile в archive.tar, вы должны запустить:
Удаление файлов из архива Tar
Используйте операцию —delete для удаления файлов из архива.
В следующем примере показано, как удалить файл file1 из archive.tar:
Выводы
Чаще всего команда tar используется для создания и извлечения архива tar. Чтобы извлечь архив, используйте команду tar -xf за которой следует имя архива, а для создания нового используйте tar -czf за которым следует имя архива, а также файлы и каталоги, которые вы хотите добавить в архив.
Для получения дополнительной информации о команде tar обратитесь к странице документации Gnu tar .
Источник
Linux список файлов архива
При работе с 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
Добавляет файлы в существующий архив
Создает новый архив
-d , —diff , —compare
Найти различия между архивом и файловой системой
Удалить из архива (не может использоваться с магнитной лентой!)
Дописывает файлы в конец архива
Выводит список файлов архива
Добавляет только файлы, которые новее, чем имеющаяся в архиве копия
-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 , дав команду
При этом, если вы используете русифицированный дистрибутив Linux, например, Black Cat 6.02, то подсказка будет выдаваться по-русски.
4.7.2. Программа gzip
Хотя программа tar создает архивы, она, как было сказано, не сжимает архивы, а просто соединяет отдельные файлы в единый архивный файл. Для сжатия этого файла часто применяют команду gzip . В простейшем случае она вызывается в следующем формате:
В командной строке можно указать сразу несколько имен файлов или шаблон имени файла. Но в этом случае каждый из указанных файлов будет заархивирован отдельно (общий архив не создается).
Для того, чтобы распаковать архив, используйте команду
[user]$ gzip -d файл_архива
[user]$ gunzip файл_архива
Исходные файлы после сжатия удаляются, остается только архивный файл (файлы перемещаются в архив), а при разархивации удаляется архив.
Перечислим кратко другие полезные опции программы gzip .
Таблица 4.6. Основные опции программы gzip
Вызов краткой помощи по использованию программы
Выдает имя файла, содержащегося в архиве, его объем и степень сжатия
Отображает номер версии и лицензию на программу
Сохранять (или восстанавливать) исходное имя и время создания файла
Не сохранять (не восстанавливать) исходное имя и время создания файла
Подавляет выдачу на экран предупреждающих сообщений
Рекурсивно обрабатывать подкаталоги (используется в случае. когда задан шаблон имен обрабатываемых файлов)
Добавить суффикс .suf к имени сжатого файла (вместо добавляемого по умолчанию суффикса gz; но учтите, что при разархивации файлов с суффиксами, отличными от gz, программа вас не поймет)
Протестировать архивный файл
Выдача дополнительных сообщений в процессе работы программы
Отобразить версию программы
Более высокая степень сжатия
Поскольку программа 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
Принудительная разархивация. Эта опция необходима в силу того, что bzip2 , bunzip2 и bzcat — это на самом деле одна и та же программа, которая сама по расширению имени файла принимает решение о том, какое действие надо выполнить над указанным файлом. Опция -d отключает этот механизм и заставляет программу разархивировать указанные файлы
Проверка целостности указанного файла(ов) без разархивации
Перезапись существующего файла. По умолчанию bzip2 не перезаписывает существующие файлы. Если вы хотите перезаписать существующий файл, надо задать опцию -f
Сохранять (не удалять) исходные файлы при архивации или разархивации
Снижает требования к объему используемой оперативной памяти за счет снижения скорости архивации. Эту опцию рекомендуется применять на компьютерах с малым объемом ОЗУ (8 Мбайт и меньше)
Не выводить малосущественные сообщения
Выводить дополнительную информацию в процессе работе (представляет интерес в диагностических целях)
Отобразить версию программы и лицензионное соглашение
Аргументы командной строки, которым предшествует двойное тире и пробел, трактуются как имена файлов, даже если они начинаются с тире. Например,
[user]$ bzip2 — -myfilename
Я думаю, что приведенных данных достаточно для квалифицированного применения архиваторов tar , gzip и bzip2 . За дополнительными сведениями, как всегда, обращайтесь к интерактивной подсказке man. По утилите bzip2 имеется «Bzip2-HOWTO”, который даже переведен на русский язык [П6.4].
Источник