Правильнее называть "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/