Архивирование файлов в 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.gz6. Распаковка файловый архив 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.php8. 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. Также можно создать несжатый архив.
Извлечение 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
Извлечь файлы в определенный каталог или путь
Чтобы извлечь файлы в определенном каталоге, необходимо указать путь с помощью «- с» вариант. Обратите внимание, что C не является разделом.
$ tar -xvzf abc.tar.gz -C /opt/folder/
Однако сначала убедитесь, что папка назначения существует, так как tar не будет создавать директорию, если ее нет.
Извлечение одного файла
Чтобы извлечь один файл из архива нужно просто добавить название файла после команды так:
$ tar -xz -f abc.tar.gz "./new/abc.txt"
Больше чем один файл может быть указан в предыдущей команде так
$ tar -xv -f abc.tar.gz "./new/cde.txt" "./new/abc.txt"
Извлечение несколько файлов, используя подстановочные знаки
Подстановочные знаки можно использовать, чтобы извлечь кучу файлов, соответствующих заданному подстановочному знаку. Например, все файлы » txt» — расширения.
$ tar -xv -f abc.tar.gz --wildcards "*.txt"
Список и поиск содержимого архива 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
Создать 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/
Спрашивать подтверждение перед добавлением файлов
Полезная опция-это «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/
Добавлять файлы в существующие архивы
Используя параметр r можно добавлять файлы в существующие архивы, без необходимости создавать новые. Вот быстрый пример
$ tar -rv -f abc.tar abc.txt
Файлы не могут быть добавлены в сжатые архивы (gz или bzip). Файлы могут быть добавлены в обычный архив tar.
Добавлять файлы в сжатые архивы (tar.gz/tar.bz2)
Выше мы уже сказали, что файлы не могут быть добавлены в жатые архивы. Однако все же можно добавить файлы, в сжатые архивы, используя один трюк. Воспользуйтесь помощью gunzip команды, чтобы распаковать архив, добавить файл в архив и сжать его заново.
$ gunzip archive.tar.gz $ tar -rf archive.tar ./path/to/file $ gzip archive.tar
Для bzip файлов используйте bzip2 и bunzip2 команд соответственно.
Резервное копирование с помощью tar
Реальный сценарий для резервного копирования каталогов через равные промежутки времени. Команда tar может планироваться на такие резервные копии с помощью cron. Вот пример —
$ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/
Выполните вышеуказанную команду через cron, и он будет продолжать создавать резервные копии файлов с именами как —
"archive-20150218.tar.gz".
Проверка архивных файлов при создании
Параметр «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 .