Битлента
Windows, macOS, Android, iOS5 мин чтения·

tar -czvf и tar -xzvf: как упаковать и распаковать архив tar.gz в Linux и macOS

Как работать с архивами tar.gz в терминале: расшифровка ключей czvf и xzvf, просмотр содержимого, распаковка в нужную папку и проверка перед извлечением.

Кратко

Архив создают командой tar -czf имя.tar.gz папка, а распаковывают командой tar -xzf имя.tar.gz. Ключ c создаёт, x извлекает, z включает сжатие gzip, f задаёт имя файла. Перед распаковкой чужого архива полезно посмотреть содержимое ключом t.

Что такое tar.gz: упаковка и сжатие по отдельности

У многих возникает вопрос, чем tar отличается от zip. Программа tar сама по себе только склеивает множество файлов и папок в один файл-контейнер, сохраняя имена, структуру каталогов, права доступа и время изменения. Сжатие в ней не обязательно. Его добавляют отдельным шагом: gzip даёт расширение .gz, bzip2 даёт .bz2, xz даёт .xz.

Поэтому имя архива расшифровывается по частям. Файл с окончанием .tar.gz, он же .tgz, — это контейнер tar, сжатый gzip. Именно сохранение прав и владельцев делает tar привычным инструментом в Linux и macOS: при переносе папки со скриптами биты выполнения не теряются, а в обычных zip-архивах часть таких сведений может пропасть, в зависимости от программы.

Команда tar входит в базовый набор и в Linux, и в macOS, ничего устанавливать не нужно. В двух системах встречаются разные реализации (в Linux обычно GNU tar, в macOS bsdtar), но основные ключи у них совпадают. Нюансы вроде редких расширенных параметров лучше проверять в справке: man tar покажет то, что поддерживает ваша система.

Расшифровка ключей czvf, xzvf и tzf

Ключи tar — это набор одиночных букв, и дефис перед ними в большинстве случаев можно опустить, но с ним привычнее. Смысл каждой буквы простой.

КлючЗначение
ccreate: создать архив
xextract: извлечь содержимое
tlist: показать список файлов, ничего не распаковывая
zпропустить через gzip (сжатие или распаковка)
jто же для bzip2
Jто же для xz
vverbose: выводить имена файлов по ходу работы
fследующий аргумент — имя файла архива

Буква f должна идти последней в группе, потому что за ней сразу следует имя файла. Запись tar -czvf backup.tar.gz документы читается как: создать, сжать gzip, показывать ход работы, файл backup.tar.gz, упаковать папку «документы». При распаковке современные версии tar сами определяют тип сжатия по содержимому файла, так что tar -xf архив подойдёт и для .gz, и для .xz, но привычная явная буква ничему не вредит.

Упаковка: пошаговый порядок

Чтобы заархивировать папку, соблюдайте такую последовательность.

  1. Перейдите в папку, которая содержит нужный каталог: cd /путь/к/родителю. Это определит, какие пути запишутся в архив.
  2. Выполните tar -czvf имя.tar.gz имя_папки. Архив появится в текущем каталоге.
  3. Проверьте результат: tar -tzf имя.tar.gz | head покажет первые строки списка. Убедитесь, что пути относительные и начинаются с имени папки.
  4. Сравните размеры и при необходимости попробуйте распаковать во временную папку.

Пути в архиве важны. Если указать абсолютный путь вроде /home/user/docs, tar обычно отбросит начальный слэш и предупредит об этом, а в архиве сохранится длинная цепочка каталогов. Для переносимых архивов лучше упаковывать относительные пути из нужного места или использовать ключ -C, который задаёт каталог, откуда берутся файлы.

Если нужно исключить часть содержимого, например папку с временными файлами, используйте параметр --exclude с шаблоном. Забытое исключение — частая причина слишком большого архива, особенно когда внутри оказываются кэши и журналы.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Распаковка: куда и как безопасно

По умолчанию tar -xzf имя.tar.gz распаковывает всё в текущую папку, и если внутри не один каталог, а множество файлов, они рассыплются прямо среди ваших. Чтобы избежать беспорядка, сначала посмотрите список: tar -tzf имя.tar.gz | head. Если верхнего каталога нет, создайте отдельную папку и распакуйте в неё: mkdir новая и tar -xzf имя.tar.gz -C новая.

Если нужен один файл, его можно извлечь, указав путь так, как он записан в архиве: tar -xzf имя.tar.gz путь/к/файлу. Точный путь берут из вывода ключа t.

Меры осторожности при работе с чужими архивами:

  • смотрите список перед извлечением: имена с .. или с абсолютными путями могут записать файлы за пределами выбранной папки; современные версии tar обычно защищаются от этого, но не стоит на это рассчитывать;
  • не распаковывайте от имени администратора без необходимости: права и владельцы из архива применяются целиком;
  • не запускайте скрипты из полученного архива, пока не прочитали их;
  • проверяйте контрольную сумму, если она опубликована автором: это защищает от повреждённой загрузки.

Типичные ошибки и их смысл

Сообщения tar короткие, но понятные, если знать, о чём они говорят.

«Cannot open: No such file or directory» — неверное имя или путь архива, либо вы находитесь не в той папке. Проверьте ls и положение в файловой системе.

«gzip: stdin: not in gzip format» — файл не сжат gzip, хотя вы использовали ключ z. Причина может быть в неверном расширении или в том, что загрузка оказалась не архивом, а страницей с сообщением об ошибке. Проверьте команду file имя: она определит тип по содержимому.

«Unexpected EOF in archive» или «truncated» — архив обрезан, чаще всего из-за прерванной загрузки. Загрузите заново и сравните размер.

«Permission denied» при распаковке — у вас нет права записи в выбранную папку; выберите другой каталог, а не повышайте права без нужды. Подробнее о правах рассказывает справка по команде chmod.

Ошибка «tar: Removing leading / from member names» — не ошибка, а предупреждение: начальный слэш удалён, архив создан нормально.

Что выбрать: gzip, bzip2, xz или zip

Формат сжатия — компромисс между скоростью и размером. Gzip быстрый и распространён повсеместно, поэтому подходит по умолчанию. Bzip2 и xz обычно сжимают плотнее, но тратят больше процессорного времени; насколько именно, зависит от данных, поэтому универсальных цифр здесь не стоит ждать. Если важна скорость, оставайтесь на gzip, если нужно уменьшить большой архив для хранения — попробуйте xz.

Zip удобен, когда архив получает человек на другой системе, особенно на компьютере с Windows: такие файлы открываются штатными средствами. Для передачи между Linux и macOS tar.gz подходит лучше, так как сохраняет права доступа и структуру.

Для резервных копий важнее не формат, а проверка: попробуйте раз в какое-то время развернуть архив во временную папку и убедиться, что файлы читаются. Копия, которую ни разу не проверяли, остаётся предположением. Ключ -v полезен только при ручной работе; в автоматических задачах, которые вы запускаете по расписанию, его можно убрать, чтобы вывод не засорял журнал.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
linuxmacostarархивы

Часто задаваемые вопросы

Читайте также