Linux tar: как распаковать и создать архив tar.gz
Чтобы распаковать архив .tar.gz, выполните tar -xzf архив.tar.gz. Чтобы создать его, используйте tar -czf архив.tar.gz папка. Буквы ключей означают: x извлечь, c создать, z сжатие gzip, f имя файла архива.
Распаковать
tar -xzf backup.tar.gz # в текущую папку
tar -xzf backup.tar.gz -C /tmp/restore # в указанную папку (она должна существовать)
tar -xf backup.tar.gz # формат сжатия определяется автоматическиВ современных версиях GNU tar ключ формата сжатия можно не писать: tar -xf сам распознаёт gz, bz2 и xz.
Какой ключ для какого формата
Расширение | Распаковать | Создать |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Создать архив
tar -czf site.tar.gz site/ # упаковать папку
tar -czf site.tar.gz --exclude='*.log' site/ # исключить файлы по маске
tar -czf site.tar.gz -C /var/www site # без полного пути /var/www внутри архиваКлюч -C переходит в папку перед упаковкой, поэтому в архиве лежит путь site/..., а не var/www/site/.... Ключи --exclude ставьте до имён папок и файлов: GNU tar применяет их только к тому, что указано после них, а при другом порядке выводит предупреждение и завершается с ошибкой.
Посмотреть содержимое без распаковки
tar -tzf site.tar.gz # список файлов
tar -tvzf site.tar.gz # с правами, размерами и датамиИзвлечь один файл или папку
tar -xzf site.tar.gz site/index.html # один файл
tar -xzf site.tar.gz --wildcards 'site/*.css' # по маскеУбрать верхнюю папку при распаковке
Если архив содержит одну корневую папку, а вам нужны файлы сразу в целевой:
tar -xzf release-1.2.tar.gz --strip-components=1 -C /opt/appZip-архивы
zip -r site.zip site/ # создать
unzip site.zip -d /tmp/out # распаковать в папку
unzip -l site.zip # посмотреть содержимоеДописать в существующий архив
Сжатые архивы .tar.gz дописывать нельзя. Для несжатого .tar есть ключ -r: tar -rf a.tar новый-файл.
Частые вопросы
Что значит «Cannot open: No such file or directory» при -C?
Целевая папка не существует. Создайте её: mkdir -p /tmp/restore.
Как сохранить права доступа и владельца?
Создавайте архив от root и распаковывайте с ключом -p (tar -xzpf), он сохраняет права. Владельца восстанавливает root автоматически.
Как распаковать архив с кириллическими именами из Windows?
Обычно архив tar хранит имена в UTF-8 и проблем нет. Для zip-архивов из Windows может понадобиться unzip -O cp866 архив.zip.