sonyps4.ru

Tar параметры. Резервное копирование в Linux – команда tar

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

Что такое Tar?

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

Tar поддерживает широкий спектр программ сжатия, таких как gzip , bzip2 , lzip , lzma , lzop , xz и compress . При создании сжатых tar-архивов принято считать добавление суффикса компрессора к имени файла архива. Например, если архив был сжат с помощью gzip, он должен быть назван archive.tar.gz.

Tar был первоначально разработан для создания архивов при хранения файлов на магнитной ленте, поэтому он имеет свое название « T ape AR chive».

Существуют две версии tar, BSD tar и GNU tar с некоторыми функциональными отличиями. Большинство систем Linux поставляются с предустановленной GNU tar по умолчанию. Если у вас не установлен tar, рекомендуем сначало установить его следую нашей статьи .

Синтаксис командной строки

Прежде чем перейти к использованию команды 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 Archive

Используйте оператор -c для создания архива tar. Например, чтобы создать архивный файл с именем archive.tar из файлов с именем file1 , file2 , file3 выполните следующую команду:

Tar -cf archive.tar file1 file2 file3

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

Tar --create --file=archive.tar file1 file2 file3

В следующем примере будет создан архив backup.tar из каталога /home/username:

Tar -cf backup.tar /home/username

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

Создание архива Tar Gz

Gzip – самый популярный алгоритм сжатия tar-файлов. При сжатии архивов tar с gzip имя архива должно заканчиваться либо tar.gz или tgz .

Чтобы создать архив tar.gz из заданных файлов, вы можете использовать следующую команду:

Tar -czf archive.tar.gz file1 file2

Опция -z сообщает tar сжать архив, используя алгоритм gzip .

Создание архива Tar Bz2

Другим популярным алгоритмом сжатия tar-файлов является bzip2. При сжатии архивов tar с bzip2 имя архива должно заканчиваться либо tar.bz2 либо tbz .

Когда указана опция -j , tar будет использовать алгоритм bzip2 сжатия архива.

Следующая команда создаст архив tar.bz2 из заданных файлов:

Tar -cjf archive.tar.bz2 file1 file2

Листинг архива Tar

Чтобы перечислить содержимое tar-архива, используйте операцию --list (-t).

Tar -tf archive.tar file1 file2 file3

Если вы укажете содержимое архива с помощью параметра --verbose (-v), tar будет печатать больше информации, например, владельца, размера файла, метки времени и т.д.:

Tar -tvf archive.tar -rw-r--r-- linuxize/users 0 2018-09-08 20:15 file1 -rw-r--r-- linuxize/users 0 2018-09-08 20:15 file2 -rw-r--r-- linuxize/users 0 2018-09-08 20:15 file3

Извлечение архива Tar

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

Tar -xf archive.tar

Также обычно добавляется опция -v для печати имен извлеченных файлов.

Tar -xvf archive.tar

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

Например, чтобы извлечь содержимое архива в каталог /opt/files , вы можете использовать:

Tar -xf archive.tar -C /opt/files

Извлечение архивов Tar Gz и Tar Bz2

При извлечении сжатых архивов, например, tar.gz или tar.bz2 вам не нужно указывать параметр декомпрессии. Команда такая же, как при извлечении архива tar:

Tar -xf archive.tar.gz tar -xf archive.tar.bz2

Извлечение определенных файлов из tar-архива

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

Tar -xf archive.tar file1 file2

При извлечении файлов вы должны указать свои точные имена, включая путь, как напечатано --list (-t).

Извлечение одной или нескольких каталогов из архива аналогично извлечению файлов:

Tar -xf archive.tar dir1 dir2

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

Tar -xf archive.tar README tar: README: Not found in archive tar: Exiting with failure status due to previous errors

Извлечение файлов из архива Tar с помощью подстановочного знака

Чтобы извлечь файлы из архива на основе шаблона подстановочных знаков, используйте переключатель --wildcards и укажите шаблон, чтобы предотвратить интерпретацию оболочки.

Например, чтобы извлечь файлы, имена которых заканчиваются на.js (файлы Javascript), вы можете использовать:

Tar -xf archive.tar --wildcards "*.js"

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

Чтобы добавить файлы или каталоги в существующий архив tar, используйте операцию --append (-r).

Например, чтобы добавить файл с именем newfile в archive.tar, вы можете использовать:

Tar -rvf archive.tar newfile

Удаление файлов из tar-архива

Используйте операцию --delete для удаления файлов из архива.

Например, чтобы удалить файл с именем file1 из archive.tar, вы можете использовать:

Tar --delete -f archive.tar file1

Вывод

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

На Unix (это Linux , Freebsd и др.) системах команда tar является главной архивирующей утилитой. Понимание множества опций этой команды позволит вам мастерски манипулировать архивами.

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

Создание архива с использованием команды tar

Создание и распаковка tar архива производится с использованием опции cvf. Вот так выглядит базовая команда для создания архива:

$ tar cvf archive_name.tar dirname/

Разберем каждый ключ из опции по отдельности:

  • c – создание нового архива
  • v – вывод списка файлов к обработке
  • f – имя файла архива

Чтобы создать архив сжатый gzip нужно использовать опцию cvzf. Предыдущая опция cvf абсолютно не использует какого-либо сжатия. Чтобы использовать gzip сжатие добавьте опцию z как показано ниже:

$ tar cvzf archive_name.tar.gz dirname/

  • z – упаковывает архив используя gzip сжатие

Лично предпочитаю всегда оставлять опцию cvf без изменений и только лишь в конце дописывать необходимые ключи если потребуется сжатие. Например, cvfz или cvfj. Так легче запоминается.

Теперь давайте создадим архив используя bzip2 сжатие:

$ tar cvfj archive_name.tar.bz2 dirname/

  • j – упаковывает архив используя bzip2 сжатие

gzip или bzip2? Сжатие и распаковка архива при помощи bzip2 занимает несколько больше времени и сам архив получается меньшего размера.

Создание tar архива с текущей датой в имени архива

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

Tar -cvf archive-$(date +%Y%m%d).tar.gz dirname/

Распаковка архива с использованием команды tar

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

$ tar xvf archive_name.tar

  • x – извлечение файлов из архива

Чтобы распаковать tar.gz используйте опцию xvfz:

$ tar xvfz archive_name.tar.gz

Чтобы распаковать архив сжатый bzip2 используйте опцию xvfj:

$ tar xvfj archive_name.tar.bz2

Просмотр файлов в архиве tar

Чтобы посмотреть содержимое tar архива используйте опцию tvf.

$ tar tvf archive_name.tar

Чтобы посмотреть содержимое архива сжатого при помощи gzip воспользуйтесь опцией tvfz

$ tar tvfz archive_name.tar.gz

Чтобы посмотреть содержимое архива сжатого при помощи bzip2 воспользуйтесь опцией tvfj

$ tar tvfj archive_name.tar.bz2

Извлечение отдельного файла из tar, tar.gz, tar.bz2 архивов

Бывают ситуации, когда из большого архива требуется извлечь только 1 файл:

$ tar xvf archive_file.tar path/to/file

Для сжатых gzip и bzip2 архивов соответственно используйте:

$ tar xvfz archive_file.tar.gz path/to/file $ tar xvfj archive_file.tar.bz2 path/to/file

Извлечение отдельной папки из tar, tar.gz, tar.bz2 архивов

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

$ tar xvf archive_file.tar /path/to/dir/

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

$ tar xvf archive_file.tar /path/to/dir1/ /path/to/dir2/

Для сжатых архивов то же самое, только с использованием соответственно дополнительных ключей:

$ tar xvfz archive_file.tar.gz /path/to/dir/ $ tar xvfj archive_file.tar.bz2 /path/to/dir/

Извлечение группы файлов из tar, tar.gz, tar.bz2 архивов с использованием регулярных выражений

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

$ tar xvf archive_file.tar --wildcards "*.pl"

Добавление файла или папки в существующий архив tar

Для добавления нового файла или папки в уже существующий архив используйте опцию -r:

$ tar rvf archive_name.tar newfile

Добавление папки проводится по аналогии:

$ tar rvf archive_name.tar newdir/

Помните, что операция добавления файлов и папок работает только для не сжатых tar архивов.

Определение tar размера архива перед его созданием

Следующая команда позволяет определить размер tar.gz или tar.bz2 архива перед его созданием (в KB)

Tar -czf - /directory/to/archive/ | wc –c $ tar -cjf - /directory/to/archive/ | wc -c

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

Использование

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

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

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

Tar -cf txt.tar *.txt

Эта команда упакует все файлы с расширением txt в архив txt.tar. Так и создается простейший архив без сжатия. Для использования сжатия не нужно запускать что-либо еще, достаточно указать tar, каким архиватором следует сжать архив. Для двух самых популярных архиваторов gzip и bzip2 ключи будут -z и -j соответственно.

Tar -cvzf files.tar.gz ~/files

упакует папку ~/files со всем содержимым в сжатый с помощью gzip архив.

Tar -cvjf files.tar.bz2 ~/files

создаст аналогичный архив, используя для сжатия bzip2.

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

Помимо gzip и bzip2 можно использовать, например, lzma (ключ –lzma) или xz (ключ -J), при этом соответствующий архиватор должен быть установлен в системе.

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

Действие «распаковка» задается с помощью ключа -x . И тут снова потребуется ключ -f для указания имени файла архива. Также добавим ключ -v для визуального отображения хода процесса.

Tar -xvf /path/to/archive.tar.bz2

распакует содержимое архива в текущую папку. Альтернативное место для распаковки можно указать с помощью ключа -C:

Tar -xvf archive.tar.bz2 -C /path/to/folder

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

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

Tar -tf archive.tar.gz

Она выведет простой список файлов и каталогов в архиве. Если же добавить ключ -v , будет выведен подробный список с указанием размера, прав доступа и прочих параметров (так же, как по ls -l)

Прочие возможности

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

man tar tar --help

Простая схема резервирования состоит в том, чтобы все сохранить однажды, а затем резервировать все что изменилось, начиная с предыдущей копии. Первая копия называется полной (full backup) , последующие инкрементными (incremental backups) . Полная копия часто не помещается целиком на ленту (или дискету). Восстановление из инкрементных копий может потребовать во много раз большего количество работы, чем из полного. Восстановление может быть оптимизировано так, чтобы Вы всегда резервировали все, начиная с предыдущей полной копии; этот путь требует немного больше работы, но никогда не будет потребности восстановить больше, чем полную и одну инкрементную копию.

Если Вы хотите делать копии ежедневно и иметь шесть лент, Вы могли бы использовать ленту 1 для первой полной копии (скажем, в пятницу) и ленты со 2 по 5 для инкрементных копий (понедельник-четверг). Затем Вы делаете новую полную копию на ленте 6 (вторая пятница), и снова начинаете делать инкрементные копии на лентах 2-5. Вы не хотите перезаписывать ленту 1, пока вы не имеете новую полную копию, чтобы ничего страшного не произошло в то время, пока вы делаете новую полную копию. После того, как вы сделали полную копию на ленте 6, Вы можете хранить ленту 1 где-нибудь еще на случай разрушения ваших других резервных лент. Когда Вы должны сделать следующую полную копию, Вы выбираете и используете ленту 1.

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

Резервирование с применением tar

Полная копия может легко быть сделана командой tar :

# tar --create --file /dev/ftape /usr/src

Пример выше использует GNU версию tar и длинные имена опции. Традиционная версия tar понимает только одиночный символ в качестве парамета. GNU версия может также обрабатывать копии, которые не помещаются на одной ленте или дискете, и очень длинные пути; не все традиционные версии могут делать это. Linux использует только GNU tar .

Если ваша копия не помещается на одной ленте, Вы должны использовать опцию --multi-volume (-M ):

# tar -cMf /dev/fd0H1440 /usr/src

tar: Removing leading / from absolute path names in the archive

Prepare volume #2 for /dev/fd0H1440 and hit return:

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

После того, как вы сделали копию, Вы должны ее проверить, используя опцию --compare (-d ):

# tar --compare --verbose -f /dev/ftape

usr/src/

usr/src/linux

....

Невыполнение проверки копии означает, что Вы не заметите, что ваша копия не работает, пока не потеряете первоначальные данные.

Инкрементная копия может быть выполнена командой tar с опцией --newer (-N ):

# tar --create --newer "8 Sep 1995" --file /dev/ftape /usr/src --verbose

tar: Removing leading / from absolute path names in the archive

usr/src/

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/linux/modules/

usr/src/linux-1.2.10-includes/include/asm-generic/

usr/src/linux-1.2.10-includes/include/asm-i386/

usr/src/linux-1.2.10-includes/include/asm-mips/

usr/src/linux-1.2.10-includes/include/asm-alpha/

usr/src/linux-1.2.10-includes/include/asm-m68k/

usr/src/linux-1.2.10-includes/include/asm-sparc/

usr/src/patch-1.2.11.gz

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

Восстановление с применением tar

Команда tar с опцией --extract (-x ) извлекает файлы:

# tar --extract --same-permissions --verbose --file /dev/fd0H1440

usr/src/

usr/src/linux

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/

usr/src/linux-1.2.10-includes/include/linux/

...

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

# tar xpvf /dev/fd0H1440 usr/src/linux-1.2.10-includes/include/linux/hdreg.h

usr/src/linux-1.2.10-includes/include/linux/hdreg.h

Используйте опцию --list (-t ), если Вы хотите только увидеть какие файлы находятся на резервном томе:

# tar --list --file /dev/fd0H1440

usr/src/

usr/src/linux

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/

usr/src/linux-1.2.10-includes/include/linux/

usr/src/linux-1.2.10-includes/include/linux/hdreg.h

usr/src/linux-1.2.10-includes/include/linux/kernel.h

...

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

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



man tar Использование: tar [ОПЦИЯ...] [ФАЙЛ]...
GNU `tar" предназначен для сохранения файлов
на магнитную ленту или в архив на диске и
для восстановления отдельных файлов из
архива.

Примеры:
tar -cf archive.tar foo bar # Создание archive.tar из файлов
foo и bar.
tar -tvf archive.tar # Вывод подробного списка
всех файлов в архиве archive.tar.
tar -xf archive.tar # Извлечение всех файлов
из archive.tar.

Основной режим работы:

A, --catenate, --concatenate присоедининие tar-файлов
к архиву
-c, --create создание нового архива
-d, --diff, --compare поиск различий между
архивом и файловой
системой
--delete удаление из архива (не на
магнитных лентах!)
-r, --append добавление файлов в конец
архива
-t, --list вывод списка содержимого
архива
--test-label проверка метки тома архива
и выход
-u, --update добавление в архив только
более новых файлов
-x, --extract, --get извлечение файлов из
архива

Модификаторы:

Check-device check device numbers when
creating incremental
archives (default)
-g, --listed-incremental=ФАЙЛ
обработка добавочного
резервирования нового
формата GNU
-G, --incremental обработка добавочного
резервирования старого
формата GNU
--ignore-failed-read не завершать работу при
ненулевом статусе для
нечитаемых файлов
-n, --seek доступен поиск по архиву
--no-check-device do not check device numbers when creating
incremental archives
--occurrence[=N] обработка только N-ого
вхождения для каждого
файла в архиве. Эта опция
верна только в сочетании с
одной из подкоманд --delete,
--diff, --extract или --list, и когда
список файлов задан либо в
командной строке, либо
через опцию -T. По умолчанию
N равен 1.
--sparse-version=MAJOR[.MINOR]
установить версию
используемого формата
разрежения (подразумевает
--sparse)
-S, --sparse эффективная обработка
разрежённых файлов

Управление перезаписью:

K, --keep-old-files не перезаписывать
существующие файлы при
извлечении
--keep-newer-files не перезаписывать
существующие файлы,
которые более новые, чем их
копии в архиве
--no-overwrite-dir сохранение метаданных
существующих каталогов
--overwrite перезапись существующих
файлов при извлечении
--overwrite-dir перезапись существующих
файлов при извлечении (по
умолчанию)
--recursive-unlink очистка всей иерархии до
извлечения каталога
--remove-files удаление файлов после их
добавления в архив
-U, --unlink-first удаление каждого файла до
извлечения поверх него
-W, --verify попытка проверить архив
после его записи

Выбор выходного потока:

Ignore-command-error игнорировать коды
завершения дочерних
процессов
--no-ignore-command-error считать ненулевые коды
завершения дочерних
процессов как ошибку
-O, --to-stdout извлекать файлы на
стандартный вывод
--to-command=КОМАНДА
перенаправлять
извлечённые файлы в другую
программу

Обработка атрибутов файлов:

Atime-preserve[=СПОСОБ]
сохранять время доступа
скопированных файлов путём
восстановления времени
после чтения (СПОСОБ="replace";
используется по умолчанию)
или не установки времени в
первую очередь
(СПОСОБ="system")
--delay-directory-restore не устанавливать время
изменения и права доступа
извлечённых каталогов до
завершения процесса
извлечения
--group=ИМЯ принудительно
устанаваливать ИМЯ в
качестве группы для
добавленных файлов
--mode=РЕЖИМ принудительно
устанавливать (символьный)
РЕЖИМ доступа для
добавляемых файлов
--mtime=ДАТА-ИЛИ-ФАЙЛ
устанаваливать для
добавленных файлов mtime из
ДАТЫ-ИЛИ-ФАЙЛА
-m, --touch не извлекать время
изменения файла
--no-delay-directory-restore
отменить действие опции
--delay-directory-restore
--no-same-owner извлекать файлы как свои
собственные
--no-same-permissions применять umask пользователя
при извлечении прав
доступа из архива (по
умолчанию для обычных
пользователей)
--numeric-owner использовать числа вместо
имён владельца/группы
--owner=ИМЯ принудительно
устанаваливать ИМЯ в
качестве владельца для
добавленных файлов
-p, --preserve-permissions, --same-permissions
извлекать информацию о
правах доступа к файлу (по
умолчанию для
суперпользователя)
--preserve эквивалент -p и -s
--same-owner попытаться извлечь файлы с
тем же владельцем
-s, --preserve-order, --same-order
сортировать извлекаемые
имена в том же порядке, что
и в архиве

Выбор и переключение устройств:

F, --file=АРХИВ использовать файл или
устройство АРХИВ
--force-local файл архива является
локальным, даже если
содержит двоеточие
-F, --info-script=ИМЯ, --new-volume-script=ИМЯ
запустить скрипт по
окончании каждой ленты
(подразумевается
использование -М)
-L, --tape-length=N сменить ленту после записи
ЧИСЛО x 1024 байт
-M, --multi-volume
создание/листинг/извлечение
многотомных архивов
--rmt-command=КОМАНДА
использовать указанную
КОМАНДУ rmt вместо rmt
--rsh-command=КОМАНДА
использовать удалённую
КОМАНДУ вместо rsh
--volno-file=ФАЙЛ использовать/обновлять
номера тома в ФАЙЛЕ

Разбиение на блоки:

B, --blocking-factor=БЛОКИ
число БЛОКОВ x 512 байт на
запись
-B, --read-full-records заново разбивать на блоки
при чтении (для каналов
4.2BSD)
-i, --ignore-zeros игнорировать нулевые блоки
в архиве (т.е. EOF)
--record-size=N ЧИСЛО байт на запись,
кратное 512

Формата архива:

H, --format=ФОРМАТ создать архив в указанном
формате

ФОРМАТОМ может быть:

Gnu формат GNU tar 1.13.х
oldgnu формат GNU как в tar <= 1.12
pax формат POSIX 1003.1-2001 (pax)
posix эквивалент pax
ustar формат POSIX 1003.1-1988 (ustar)
v7 старый формат tar V7

Old-archive, --portability
эквивалент --format=v7

Pax-option=keyword[[:]=значение][,keyword[[:]=значение]]
управляющие ключевые слова
pax
--posix эквивалент --format=posix
-V, --label=ТЕКСТ создать архив с именем тома
ТЕКСТ; при
листинге/извлечении
использовать ТЕКСТ в
качестве шаблона
подстановки

Compression options:

A, --auto-compress use archive suffix to determine
the compression program
-j, --bzip2 пропустить архив через bzip2
--lzma filter the archive through lzma
--use-compress-program=ПРОГ
пропустить архив через
ПРОГ (должна поддерживать
-d)
-z, --gzip, --gunzip, --ungzip пропустить архив через
gzip
-Z, --compress, --uncompress пропустить архив через
compress

Выбор локальных файлов:

Add-file=ФАЙЛ добавить указаный ФАЙЛ в
архив (полезно, если имя
начинается с дефиса)
--backup[=УПРАВЛЕНИЕ]
делать копию перед
удалением, УПРАВЛЕНИЕ
выбора версий
-C, --directory=КАТАЛОГ перейти в КАТАЛОГ
--exclude=ШАБЛОН исключать файлы,
определённые ШАБЛОНОМ
--exclude-caches исключать содержимое
каталогов с файлом CACHEDIR.TAG
за исключением самого
файла с тегами
--exclude-caches-all исключать каталоги,
содержащие файл CACHEDIR.TAG
--exclude-caches-under исключать всё содержимое
каталогов, содержащих файл
CACHEDIR.TAG
--exclude-tag=ФАЙЛ исключать каталоги,
содержащие ФАЙЛ, за
исключением самого ФАЙЛА
--exclude-tag-all=ФАЙЛ исключать каталоги с
ФАЙЛОМ
--exclude-tag-under=ФАЙЛ
исключать всё содержимое
каталогов, содержащих ФАЙЛ
--exclude-vcs исключать каталоги CVS
-h, --dereference следовать по символьным
ссылкам и сохранять файлы,
на которые они указывают
--hard-dereference follow hard links; archive and
dump the files they
refer to
-K, --starting-file=ИМЯ-ЧЛЕНА
начинать с члена ИМЯ-ЧЛЕНА
в архиве
--newer-mtime=ДАТА сравнивать дату и время,
только если изменены
данные
--no-recursion отключить автоматический
спуск в каталоги
--no-unquote не убирать кавычки с имён
файлов, прочитанных с
опцией -T
--null -T читает строки,
оканчивающиеся нулём,
отключает опцию -C
-N, --newer=ДАТА-ИЛИ-ФАЙЛ, --after-date=ДАТА-ИЛИ-ФАЙЛ
сохранять только те файлы,
которые новее
ДАТЫ-ИЛИ-ФАЙЛА
--one-file-system оставаться в локальной
файловой системе при
создании архива
-P, --absolute-names не удалять начальные `/" из
имен файлов
--recursion рекурсивный спуск по
каталогам (по умолчанию)
--suffix=СТРОКА делать копию перед
удалением, переопределяет
обычный суффикс ("~", если
только он не переопределён
переменной окружения
SIMPLE_BACKUP_SUFFIX)
-T, --files-from=ФАЙЛ загрузить из ФАЙЛА имена
для извлечения или
создания
--unquote убрать кавычки с имён
файлов, прочитанных с
опцией -T (по умолчанию)
-X, --exclude-from=ФАЙЛ исключать шаблоны,
перечисленных в ФАЙЛЕ

Преобразвание имён файлов:

Strip-components=N удалять указанное ЧИСЛО
начальных компонентов из
имён файлов перед
извлечением
--transform=РАСШИРЕНИЕ
использовать замену
РАСШИРЕНИЯ sed"ом для
преобразования имён файлов

Параметры шаблонов подстановки для имён
файлов (вляют на шаблюны включения и
исключения):

Anchored шаблоны начала имени файла
--ignore-case игноририровать регистр
--no-anchored шаблоны после любого "/" (по
умолчанию для исключаемых)
--no-ignore-case с учётом регистра (по
умолчанию)
--no-wildcards точное соответствие
строке
--no-wildcards-match-slash маски не соответствуют
"/"
--wildcards использовать маски (по
умолчанию для исключаемых)
--wildcards-match-slash маски соответствут "/" (по
умолчанию для исключаемых)

Вывод информации:

Checkpoint[=N] вывод сообщений о ходе
выполнения через каждые
ЧИСЛО записей (по умолчанию
10)
--checkpoint-action=ACTION execute ACTION on each checkpoint
--index-file=ФАЙЛ отправить подробный вывод
данных в FILE
-l, --check-links вывод сообщений, если
сохранены не все ссылки
--no-quote-chars=СТРОКА
отключить цитирование
символов из СТРОКИ
--quote-chars=СТРОКА дополнительно
цитировать символы из
СТРОКИ
--quoting-style=СТИЛЬ установить стиль
цитирования имён. Значения
для СТИЛЯ см. ниже
-R, --block-number выводить номера блоков
архива в каждом сообщении
--show-defaults показать значения tar по
умолчанию
--show-omitted-dirs при выводе листинга или
извлечении показывать все
каталоги, не
соответствующем условию
поиска
--show-transformed-names, --show-stored-names
показывать имена файлов
или архивов после
преобразования
--totals[=СИГНАЛ] вывод общего числа байт
после обработки архива; с
аргументом - вывод общего
числа байт после доставки
этого СИГНАЛА. Разрешённые
сигналы: SIGHUP, SIGQUIT, SIGINT, SIGUSR1
и SIGUSR2. Также разрешается
использовать имена без
префикса SIG
--utc вывод даты изменения файла
в формате UTC
-v, --verbose подробный листинг
обрабатываемых файлов
-w, --interactive, --confirmation
запрашивать подтверждение
для каждого действия

Опции совместимости:

O при создании, эквивалент
--old-archive; при извлечении,
эквивалент --no-same-owner

Другие опции:

Help вывод этой справки
--restrict отключить использование
некоторых потенциально
опасных опций
--usage вывод короткого сообщения
об использовании
--version вывод версии программы

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

Суффикс для резервных копий - `~", если он не
установлен через --suffix
или SIMPLE_BACKUP_SUFFIX. Управление версиями может
быть установлено
через --backup или VERSION_CONTROL. Значениями могут
быть:

None, off не создавать резервные копии
t, numbered создавать нумерованные
резервные копии
nil, existing нумерованные, если существуют
нумерованные копии, иначе простые
never, simple всегда создавать простые
резервные копии

Допустимые агрументы для опций --quoting-style:

Literal
shell
shell-always
c
c-maybe
escape
locale
clocale

Значения по умолчанию *этого* tar:
--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/usr/sbin/rmt
--rsh-command=/usr/bin/rsh

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

Использование команды tar

Команда tar работает по умолчанию в большинстве Linux-систем и Вам не нужно устанавливать его отдельно. По умолчанию есть 2 формата сжатия gzip и bzip. Буква «z» указывает параметр gzip и «j» опция указывает на bzip. Также можно создать несжатый архив.

  1. Извлечение tar.gz архива

Чаще всего используется извлечение tar архивов. Следующая команда должна извлечь файлы из tar.gz архива

$ tar -xvzf tarfile.tar.gzp

Вот краткое объяснение используемых параметров —
х — извлечение файлов
v – выводить имена файлов как они извлекаются по одному
z — это «сжатый» файл
f — использовать следующий tar архив для эксплуатации

Извлечение tar.bz2/bzip архивов

Файлы с расширением bz2 сжимаются при помощи алгоритма bzip, и tar команда может справиться с ними. Используйте j опцию вместо z опции.

$ tar -xvjf archivefile.tar.bz2

  1. Извлечь файлы в определенный каталог или путь

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

$ tar -xvzf abc.tar.gz -C /opt/folder/

Однако сначала убедитесь, что папка назначения существует, так как tar не будет создавать директорию, если ее нет.

  1. Извлечение одного файла

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

$ tar -xz -f abc.tar.gz "./new/abc.txt"

Больше чем один файл может быть указан в предыдущей команде так

$ tar -xv -f abc.tar.gz "./new/cde.txt" "./new/abc.txt"

  1. Извлечение несколько файлов, используя подстановочные знаки

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

$ tar -xv -f abc.tar.gz --wildcards "*.txt"

  1. Список и поиск содержимого архива tar

Если вы хотите просто перечислить содержимое архива tar, а не извлекать их, можно использовать опцию “-t”. Следующая команда распечатывает содержимое tar архива.

$ tar -tz -f abc.tar.gz ./new/ ./new/cde.txt ./new/subdir/ ./new/subdir/in.txt ./new/abc.txt ...

Используя на v- опцию можно напечатать дополнительные сведения о каждом файле.

Для tar.bz2/bzip файлов используйте «j» опцию.

$ tar -tvz -f abc.tar.gz | grep abc.txt -rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt

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

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

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

$ tar -cvf abc.tar ./new/ ./new/ ./new/cde.txt ./new/abc.txt

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

Для сжатия используйте опцию «z» или «j» для gzip или bzip соответственно.

$ tar -cvzf abc.tar.gz ./new/

  1. Спрашивать подтверждение перед добавлением файлов

Полезная опция-это «w», которая заставляет tar запрашивать подтверждение для каждого файла перед добавлением их в архив. Это может быть иногда полезно.

Эти файлы будут добавлены в архив, если дается ответ «да». По умолчанию стандартным ответом будет «нет».

# Добавить конкретные файлы $ tar -czw -f abc.tar.gz ./new/* add ‘./new/abc.txt’?y add ‘./new/cde.txt’?y add ‘./new/newfile.txt’?n add ‘./new/subdir’?y add ‘./new/subdir/in.txt’?n # Теперь список файлов, добавленных $ tar -t -f abc.tar.gz ./new/abc.txt ./new/cde.txt ./new/subdir/

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

Используя параметр r можно добавлять файлы в существующие архивы, без необходимости создавать новые. Вот быстрый пример

$ tar -rv -f abc.tar abc.txt

Файлы не могут быть добавлены в сжатые архивы (gz или bzip). Файлы могут быть добавлены в обычный архив tar.

  1. Добавлять файлы в сжатые архивы (tar.gz/tar.bz2)

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

$ gunzip archive.tar.gz $ tar -rf archive.tar ./path/to/file $ gzip archive.tar

Для bzip файлов используйте bzip2 и bunzip2 команд соответственно.

  1. Резервное копирование с помощью tar

Реальный сценарий для резервного копирования каталогов через равные промежутки времени. Команда tar может планироваться на такие резервные копии с помощью cron. Вот пример —

$ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/

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

"archive-20150218.tar.gz".

  1. Проверка архивных файлов при создании

Параметр «W» может быть использован для проверки файлов после создания архива. Вот быстрый пример.

$ tar -cvW -f abc.tar ./new/ ./new/ ./new/cde.txt ./new/subdir/ ./new/subdir/in.txt ./new/newfile.txt ./new/abc.txt Verify ./new/ Verify ./new/cde.txt Verify ./new/subdir/ Verify ./new/subdir/in.txt Verify./new/newfile.txt Verify ./new/abc.txt

Обратите внимание, что проверка не может быть проведена в сжатых архивах. Он работает только с несжатыми tar архивами.



Загрузка...