Архивирование файлов в Linux. Использование tar в Linux и FreeBSD для работы с архивами Tar распаковать с сохранением прав

К оманда “tar” в Linux используется для создания архива файлов и каталогов. С помощью команды “tar” вы можете создать архивный файл в форматах: “.tar “, “.tar.gz “, “.tar.bz2 ”. Они известны как “tarball “, “gizp “, “bzip ” в . Tar обладает большей гибкостью, чем ZIP, который широко используется в кросс-платформенной среде.

Мы покажем примеры команды tar в этой статье.

Во-первых, посмотрите, сколько опции доступны для команды

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

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

Параметры сжатия:

  • -a, -auto-compress суффикс использование архива для определения сжатия программы
  • -I, –use-compress-program=PROG фильтр через PROG (должен принять -d)
  • -j, -bzip2 фильтр архивации через bzip2
  • -J, -xz фильтровать архивации через XZ
  • -lzip фильтровать архивации через Lzip
  • -lzma фильтровать архивации через lzma
  • -lzop
  • -no-авто-compress не использовать суффикс архива для определения программы сжатия
  • -z, -gzip, -gunzip, -ungzip фильтровать архив через GZIP
  • -Z, -compress, -uncompress фильтровать архив через компрессию

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

1. Создание файлового архива с помощью tar

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

Tar -caf wordpress.tar wordpress/

Размер архива сводится к 23MB.

2. Создать файловый архив tar.gz

GZ выступает за Gunzip. .tar.gz архив может сжимать файлы и папки эффективным образом.

Tar -czf wordpress.tar.gz wordpress/

Размер архива сводится к 7.6Mb. Довольно внушительный!

# ls -lh -rw-r--r-- 1 root root 23M Jan 5 22:09 wordpress.tar -rw-r--r-- 1 root root 7.6M Jan 5 22:15 wordpress.tar.gz

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

BZIP является более эффективным, чтобы уменьшить размер файла архива.

Tar -cjf wordpress.tar.bz2 wordpress/

Размер архива сводится к 6.9MB.

# ls -lh -rw-r--r-- 1 root root 23M Jan 5 22:09 wordpress.tar -rw-r--r-- 1 root root 6.9M Jan 5 22:27 wordpress.tar.bz2 -rw-r--r-- 1 root root 7.6M Jan 5 22:26 wordpress.tar.gz

4. Файловый архив Untar tar

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

Tar -xf wordpress.tar or tar -xf wordpress.tar /home/andreyex/extracted

‘Х’ обозначает распаковка.

5. Распакуйте файл архива tar.gz

tar -xzf wordpress.tar.gz

6. Распаковка файловый архив tar.bz2

tar -xjf wordpress.tar.bz2 tar tf wordpress.tar wordpress/ wordpress/wp-blog-header.php wordpress/wp-login.php wordpress/wp-config-sample.php wordpress/wp-admin/ wordpress/wp-admin/link-parse-opml.php wordpress/wp-admin/ms-upgrade-network.php wordpress/wp-admin/themes.php

8. Untar конкретный файл из архивного файла tar

tar -xf wordpress.tar wordpress/wp-config-sample.php

Это все на данный момент. Таковы основные примеры команды tar в Unix/Linux.

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.

На 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

В качестве инструмента для архивации данных в Linux используются разные программы. Например , приобретший большую популярность из-за совместимости с ОС Windows. Но это не стандартная для системы программа. Поэтому хотелось бы осветить команду tar Linux - встроенный архиватор.

Изначально tar использовалась для архивации данных на ленточных устройствах. Но также она позволяет записывать вывод в файл, и этот способ стал широко применяться в Linux по своему назначению. Здесь будут рассмотрены самые распространенные варианты работы с этой утилитой.

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

tar опции архив.tar файлы_для_архивации

Для его распаковки:

tar опции архив.tar

Функции, которые может выполнять команда:

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

Как пользоваться tar

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

tar --totals --create --verbose --file archive.tar file1 file2 file3

Но длинные опции и параметры можно заменить (при возможности) однобуквенными значениями:

tar --totals -cvf archive.tar file1 file2 file3

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

Следующая команда выводит содержимое архива, не распаковывая его:

tar -tf archive.tar

3. Распаковка архива tar Linux

Распаковывает архив test.tar с выводом файлов на экран:

tar -xvf archive.tar

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

tar -C "Test" -xvf archive.tar

3. Работа со сжатыми архивами

Следует помнить, что tar только создаёт архив, но не сжимает. Для этого используются упомянутые компрессорные утилиты bzip2 и gzip . Файлы, сжатые с их помощью, имеют соответствующие расширения .tar.bz2 и .tar.gz . Чтобы создать сжатый архив с помощью bzip2, введите:

tar -cjvf archive.tar.bz2 file1 file2 file3

Синтаксис для gzip отличается одной буквой в параметрах, и меняется окончание расширения архива:

tar -czvf archive.tar.gz file1 file2 file3

При распаковке tar-архивов с таким расширением следует указывать соответствующую опцию:

tar -C "Test" -xjvf arhive.tar.bz2

tar -xzvf archive.tar.gz

На заметку: архиватор tar - одна из немногих утилит в GNU/Linux, в которой перед использованием однобуквенных параметров, стоящих вместе, можно не ставить знак дефиса.

Выводы

В этой статье была рассмотрена команда tar Linux, которая используется для архивации файлов и поставляется по умолчанию во всех дистрибутивах. В её возможности входит создание и распаковка архива файлов без их сжатия. Для сжатия утилита применяется в связке с популярными компрессорами bzip2 и gzip .