Архиватор tar

Полное руководство по работе с tar в Linux.

tar — это стандартный инструмент в Linux для создания и работы с архивами. Сам по себе tar не сжимает файлы — он объединяет их в один файл (архив .tar), сохраняя структуру директорий, права доступа, владельцев и другие метаданные. Сжатие добавляется отдельными утилитами: gzip (.tar.gz / .tgz), bzip2 (.tar.bz2), xz (.tar.xz) и т.д. Поэтому большинство архивов в Linux имеют двойное расширение.

Основные команды и ключи

  • -c — создать архив
  • -x — извлечь (распаковать) архив
  • -t — просмотреть содержимое архива
  • -f — указать имя файла архива (всегда нужен)
  • -v — verbose, показывать процесс в терминале
  • -z — сжатие/распаковка gzip (.tar.gz)
  • -j — сжатие/распаковка bzip2 (.tar.bz2)
  • -J — сжатие/распаковка xz (.tar.xz)
  • -C — указать директорию для распаковки
  • --exclude — исключить файлы/папки

Как создать архив

  1. Простой tar.gz (самый популярный):

    tar -czvf archive.tar.gz /path/to/folder
    

    или текущая папка

    tar -czvf archive.tar.gz .
    
  2. tar.bz2 (лучше сжатие, но медленнее):

    tar -cjvf archive.tar.bz2 /path/to/folder
    
  3. tar.xz (ещё лучше сжатие, современный стандарт):

    tar -cJvf archive.tar.xz /path/to/folder
    
  4. Только tar без сжатия (редко используется):

    tar -cvf archive.tar /path/to/folder
    

Как распаковать архив

  1. tar.gz:

    tar -xzvf archive.tar.gz
    
  2. tar.bz2:

    tar -xjvf archive.tar.bz2
    
  3. tar.xz:

    tar -xJvf archive.tar.xz
    
  4. Распаковать в конкретную папку (создастся автоматически, если нет):

    tar -xzvf archive.tar.gz -C /path/to/destination
    

Как посмотреть содержимое архива (без распаковки)

tar -tzvf archive.tar.gz     # для .gz
tar -tjvf archive.tar.bz2    # для .bz2
tar -tJvf archive.tar.xz     # для .xz
tar -tvf archive.tar         # без сжатия

Практические примеры

  • Исключить папку или файлы:
tar -czvf archive.tar.gz /var/www --exclude='*.log' --exclude='cache'
  • Добавить файлы в существующий архив:
tar -rvf archive.tar newfile.txt
  • Распаковать только один файл/папку:
tar -xzvf archive.tar.gz path/inside/archive/file.php
  • Создать архив из списка файлов (например, из find):
find /var/www -name "*.php" | tar -czvf php_files.tar.gz -T -

Полезные советы

  • Всегда используйте -v при ручной работе — видно, что именно архивируется/распаковывается
  • Для больших архивов добавляйте --checkpoint и --checkpoint-action=dot — будет показывать прогресс точками
  • Если нужно распаковать и сразу перейти в папку: tar -xzvf archive.tar.gz && cd ${archive%.tar.gz}
  • Самый быстрый и современный вариант — tar.xz (лучше gzip и bzip2 по сжатию)

Помощь

Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!

Обновлено:
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам