Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

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

Создание и распаковка архивов

Создать

Создание выполняется с ключом c . Синтаксис следующий:

tar -c<опции> <новый архивный файл> <что сжимаем>

Пример создания:

tar -czvf archive.tar.gz /home/dmosk

* в данном примере будет создан архив archive.tar.gz домашней директории пользователя (/home/dmosk )
** где z — сжать архив в gzip (без этого параметра, tar не сжимает, а создает так называемый тарбол); c — ключ на создание архива; v — verbose режим, то есть с выводом на экран процесса (очень удобно для наблюдением за ходом работы, но в скриптах можно упустить); f — использовать файл (обязательно указываем, так как в большей степени работаем именно с файлами).

Распаковать

Распаковка выполняется с ключом x с синтаксисом:

tar -x<опции> <архивный файл>

Пример распаковки:

tar -xvf archive.tar.gz

Примеры

gz

Распаковка.gz файла:

tar -xvf archive.tar.gz

* при возникновении ошибки This does not look like a tar archive , можно воспользоваться командой gzip -d archive.tar.gz .

bz2

tar -xvjf archive.tar.bz2

* ключ j отвечает за работу с bz2.

Если система ругается на bzip2, значит нужно его установить:

yum install bzip2

apt-get install bzip2

pkg install bzip2

* соответственно, для CentOS (RPM based), Ubuntu (deb based), FreeBSD (BSD based).

Если видим ошибку tar: Unrecognized archive format , воспользуемся следующей командой:

bzip2 -d archive.tar.bz2

gzip

tar -xvzf archive.tar.gzip

* ключ z отвечает за работу с gzip.

tgz

Распаковывается, как gzip:

tar -xvzf archive.tgz

Распаковать в определенную папку

tar -C /home/user -xvf archive.tar.gz

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

Распаковка без вложенной папки

Такой способ можно использовать для распаковки в заранее подготовленный каталог. Будет некий эффект переименовывания каталога или аналог «Распаковать здесь»:

tar -C /home/admin/mytar -xvf admin.tar.gz --strip-components 1

* каталог /home/admin/mytar заранее должен быть создан; --strip-components 1 пропустит одну вложенную папку внутри архива.

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

Если необходимо пропустить некоторые файлы, вводим команду с ключом --exclude:

tar -czvf archive.tar.gz /wwwsite --exclude="sess_*"

* в данном примере мы создадим архив archive.tar.gz , в котором не будет файлов, начинающихся на sess_ .

Описание ключей tar

Команды для действия

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

Дополнительные опции

Ключ Описание
--atime-preserve Оставить прежнюю метку времени доступа для файла.
-b N Задать размер блока N x 512.
-C Смена каталога. По умолчанию, используется тот, в котором мы находимся.
--checkpoint Показать имена папок при чтении архивного файла.
-G Использование старого формата инкрементального резервирования при отображении или извлечения.
-g Использование нового формата инкрементального резервирования при отображении или извлечения.
-h Не дублировать символьные ссылки. Только файлы, на которые указывают эти симлинки.
-i Игнорировать блоки нулей.
-j Использование bzip2.
--ignore-failed-read Игнорировать не читаемые файлы.
-k При распаковке, существующие файлы не заменяются соответствующими файлами из архива.
-L N Смена магнитной ленты после N*1024 байт.
-m При извлечении игнорировать время модификации объекта.
-M Многотомные архивы.
-N DATE Сохранять только более новые файлы относительно DATE
-O Направление извлекаемого на стандартный вывод.
-p Извлечение защищенной информации.
-P Не отбрасывает начальный слэш (/) из имен.
-s Сортировка файлов при извлечении.
--preserve Аналогично -ps
--remove-files Удалить исходные файлы после добавления в архив.
--same-owner Сохранить владельца при извлечении.
--totals Вывод байт при создании архива.
-v Протоколирование действий — отображение списка объектов, над которыми происходит действие.
-V NAME Создание архива на томе с меткой NAME.
--version Показать версию tar.
-w Требовать подтверждения для каждого действия.
-W Проверка архива после записи.
--exclude FILE Исключить файл FILE.
-X FILE Исключить файлы FILE.
-Z Фильтрует архив с помощью compress.
-z Использование gzip.

* актуальный список опций можно получить командой man tar .


Простая схема резервирования состоит в том, чтобы все сохранить однажды, а затем резервировать все что изменилось, начиная с предыдущей копии. Первая копия называется полной (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 архивами.

В этой статье мы покажем вам, как использовать утилиту 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.

Большая часть файлов для Linux, которые скачиваются из Интернета, заархивированы в форматах tar, tar.gz, tar.bz2 и важно знать как их вытянуть. В этой статье показывается, как извлечь (распаковать) и разархивировать (untar) файлы и папки из картотек tar, tar.gz и tar.bz2 из командной строки в Linux. Также Вы узнаете, как просмотреть содержимое tar архива не распаковывая его и как вытянуть только отдельный файл или отдельно взятую папку. Сам по себе tar не является архиватором в обыкновенном понимании этого слова, т.к. он самостоятельно не использует сжатие.

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

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

В варианте с Linux VPS на базе OpenVZ и Xen для работы с архивами достаточно базовых компонентов системы, а только Tar, Gzip и Bzip2, которые при создании сжатого архива работают как единое целое, т.к. сам по себя архиватор Tar не предусматривает возможность сжатия данных. Для этой цели как раз и используется Gzip или Bzip2. Картотеки, созданные с применением Gzip, обычно имеют расширение.tar.gz, а при использовании Bzip2 - .tar.bz2.

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

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

tar -xvzf archive.tar.gz

x — дозволяет вам извлекать файлы из архива.
v — делает вывод tar подробным. Это означает, что на экран будут выведены все выисканные в архиве файлы. Если эта опция опущена, информация, выводимая в процессе обработки, станет ограничена.
f — является обязательной опцией. Без неё tar пытается использовать магнитную ленту вместо файла картотеки.
z — позволяет вам обрабатывать архив, сжатый gzip’ом (с расширением.gz). Если вы забудете указать эту функцию, tar выдаст ошибку. И наоборот, эта опция не должна использоваться для несжатых архивов.

Для tar вовсе не непременен знак!

Распаковать tar файл:

tar -xvf foo.tar

Распаковать и разархивировать tar.gz файл:

tar -xvzf foo.tar.gz

Распаковать и разархивировать tar.bz2 файл:

tar -xvjf foo.tar.bz2

Творение tar-архива без сжатия в Linux

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

tar -cf filename.tar file1 file2 fileN

Метеопараметр -cf отвечает за создание архива filename.tar, в который войдут указанные файлы. Вместо файлов смогут быть указаны и директории.

Создание архива с использованием сжатия в Linux

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

Образчик сжатия Gzip:

tar -cvzf filename.tar.gz dir_name

В данном случае мы попытались запаковать папку dir_name в картотека filename.tar.gz. Из указанных параметров -z указывает на использование метода Gzip, а -v выводит результаты процесса творения архива с указанием упакованных файлов или папок.

Просмотр содержимого архива без распаковки в Linux

Для данных целей используется следующая команда:

tar -tf filename.tar.gz

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

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

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

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

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: