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

Tar - архивы один из наиболее распространённых способов хранения данных в Linux системах. Но tar не сжимает данные в архиве. Tar всего лишь упаковывает файлы. Для сжатия tar умеет работать с утилитами bzip2 или gzip.
Правильнее называть "tarball" (тарболл, "tar" мяч). По сути tar формат - это объединение нескольких файлов в один. Попробуйте объединить несколько текстовых файлов в один tarball и открыть его текстовым редактором. Вы увидите что это лишь большой текстовый файл, в котором перечислено содержимое входящих в него файлов с указанием их путей текстом.

Создать архив из папки

Предположим, что необходимо создать tar архив из папки и использовать при этом сжатие. Чтобы создать архив tar с gzip сжатием, нужно выполнить команду:
tar -zcf /root/files.tar.gz /home/folder/
При выполнении этой команды из содержимого папки /home/folder/ будет создан архив по адресу /root/files.tar.gz. Если указать относительный путь, то файл создастся в той папке, где открыт терминал.
В конце команды передаётся директория, которую надо архивировать. В примере стоит абсолютный путь к этой папке. В таком случае в архиве tar будет находится все родительские папки т.е. при открытии архива там будет папка /home/ и внутри неё папка /folder/. Но если абсолютный путь заменить относительным, то будет только /folder/.
В названии файла "files.tar.gz" можно указать любое расширение. Но для сжатых тарболлов лучше писать именно так. То есть сначала указывать то что это "tar", а потом писать "gz".

Разберём пример по частям. Команда tar в примере выше имеет три ключа:

  • z - архивирует с gzip компрессией. Если нужно использовать bzip2, надо заменить ключ "z" на "j".
  • c - без этого ключа архив не создастся.
  • f - вывод информация в файл. Без этого ключа tar будет выдавать результат на stdout при упаковке и пытаться читать архив с stdin при распаковке.

Исключить папки и файлы при создании архива

Иногда нужно исключить некоторые подпапки при создании архива. К примеру, если надо создать архив из папки /home/, но в него не должны попасть содержания папок /cache/ и /trash/. Тогда необходимо использовать ключ exclude:
tar -zcf /root/files.tar.gz /home/ --exclude={'*/cache/*','*/trash/*'}
Символы звёздочек в exclude означают либой набор символов. То есть выполнять эту команду без звёздочек в начале путей, то необходимо прописывать полный путь к папке, которую надо исключить.

В конце значений explude тоже стоят звёздочки, чтобы удалялись не сами папки, а их содержимое (все дочерние файлы и папки).

При выполнении такой команды в архив не попадут файлы из папок:
/home/cache/
/home/folder/cache/
/home/folder/subfolder/cache/
Обратите внимание на то, что внутри фигурных скобок explude нет пробелов {'*/cache/*','*/trash/*'}. Если поставить пробел до/после запятой или до/после фигурной скобки, то исключение не сработает.

Разархивировать

Чтобы распаковать содержимое tar архива в ту же папку, в которой он находится, перейдите в папку с ним и введите:
tar -xf files.tar.gz
Ключ x указывает на распаковку архива. Ключ f обязателен, как и при создании архива.

Если требуется распаковать архив в определённую папку, то путь к ней можно указать после ключа C:
tar -xf files.tar.gz -C /home/folder/
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх