Гид по технологиям

Как распаковать файлы .tar.gz и .tar.bz2 в Linux

9 min read Linux Обновлено 16 Dec 2025
Как распаковать .tar.gz и .tar.bz2 в Linux
Как распаковать .tar.gz и .tar.bz2 в Linux

TL;DR

  • Tarball (файлы с расширениями .tar, .tar.gz, .tar.bz2 и др.) — это архив, часто используемый в Linux и macOS. Распаковка выполняется командой tar с набором опций: -x (extract), -v (verbose), -f (file) и дополнительными флагами для типа сжатия (-z, -j, -J).
  • Чтобы посмотреть содержимое без распаковки, используйте -t; чтобы распаковать в другую папку — -C; чтобы убрать уровни директорий при распаковке — –strip-components.
  • Внимательно относитесь к архивам из ненадёжных источников: они могут перезаписать системные файлы при некорректной распаковке. Всегда проверяйте содержимое перед извлечением.

Монитор системы, показывающий диски на ПК с Linux

Быстрые ссылки

  • Что означает .tar.gz и .tar.bz2?
  • Как извлечь файлы из tar-архива
  • Куда распаковать: выбор целевой директории
  • Просмотр содержимого архива перед распаковкой
  • Распаковка файлов без создания директорий из архива

Краткое содержание

  • Tar — это формат архивов, который часто используется в Linux, Unix-подобных системах и macOS. Компрессия добавляется отдельно (.gz — gzip, .bz2 — bzip2, .xz — xz и т.д.).
  • Для распаковки tar.gz и tar.bz2 используют команду tar с соответствующими вариантами: -z для gzip, -j для bzip2, -J для xz.
  • Можно просмотреть содержимое без распаковки (-t), задать целевую папку (-C) и удалить уровни директорий (–strip-components).

Что означает .tar.gz и .tar.bz2?

Файлы с расширениями .tar.gz и .tar.bz2 — это tar-архивы, дополнительно сжатые с помощью gzip или bzip2 соответственно. Архив без сжатия имеет суффикс .tar.

Термин “tar” происходит от “tape archive” — формат из эпохи ленточных накопителей, созданный для упаковки наборов файлов. Сегодня tar остаётся удобным способом упаковки каталогов и метаданных (права доступа, владельцы, символьные ссылки и т.д.).

Разница в расширениях говорит только о том, какой алгоритм сжатия использовался: gzip (.gz) обычно быстрее, bzip2 (.bz2) даёт лучшее сжатие, xz (.xz) даёт ещё лучшее сжатие, но работает медленнее. Современные инструменты и сборщики пакетов часто используют .tar.xz.

Важно: поведение некоторых реализаций tar может отличаться. Чтобы избежать сомнений, используйте явные флаги (-z, -j, -J).

Типы файлов
РасширенияDAT · 7Z · BZ2 · XML · RTF · XLSX · WEBP · EPUB · MP4 · M4A · AVI · MOBI · SVG · MP3 · REG · PHP · LOG · PPTX · PDF · MPEG · WMA · M4V · AZW · LIT · TAR · TAR.GZ · RAR

Как извлечь файлы из tar-архива

Предположим, вы скачали два архива: ukulele_songs.tar.gz и guitar_songs.tar.bz2 в папку Downloads. Примеры ниже выполняются в терминале, находясь в этой папке.

Чтобы распаковать ukulele_songs.tar.gz, выполните:

tar -xvzf ukulele_songs.tar.gz

Пояснение опций:

  • -x — extract, извлечь файлы из архива.
  • -v — verbose, показывать имена файлов по мере извлечения.
  • -z — использовать gzip для распаковки (для .gz).
  • -f — указывает, что далее идёт имя файла архива.

После выполнения tar вы увидите список распакованных файлов в терминале и получите на диске директорию, которая была в архиве (если архив содержал корневую папку).

Распаковка всех файлов из tar-архива, список в терминале

Если архив сжат bzip2 (.tar.bz2), используйте флаг -j вместо -z:

tar -xvjf guitar_songs.tar.bz2

Пояснение: -j сообщает tar использовать bzip2 для распаковки. Поведение флагов -z/-j/-J соответствует формату сжатия.

Распаковка guitar_songs.tar.bz2 в папке Downloads

Советы:

  • Если вы не хотите видеть подробный список файлов, опустите -v.
  • Флаг -f должен быть последним из коротких флагов, за ним идёт имя архива. Например: tar -xzf archive.tar.gz.

Куда распаковать: выбор целевой директории

По умолчанию tar извлекает файлы в текущую директорию. Чтобы указать другую цель, используйте опцию -C:

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

Заметьте: целевая директория должна существовать; tar её не создаст автоматически. Чтобы создать и сразу распаковать:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

mkdir -p создаст необходимые родительские каталоги при отсутствии их.

Просмотр содержимого архива перед распаковкой

Чтобы не распаковывать “вслепую”, сначала просмотрите список файлов в архиве:

tar -tf ukulele_songs.tar.gz | less
  • -t — list, показать содержимое архива.
  • Обычно для просмотра достаточно -t, дополнительных флагов сжатия не требуется; tar умеет корректно показать список без указания -z/-j в большинстве реализаций.

Вывод содержимого tar через less

При просмотре вы увидите структуру каталогов внутри архива, например Ukulele Songs/Random Songs/....

Извлечение конкретной папки или файла

Чтобы распаковать только определённую папку внутри архива, укажите путь внутри архива. Если путь содержит пробелы, возьмите его в кавычки:

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

Чтобы извлечь один файл:

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

Можно использовать шаблоны (wildcards). Для этого применяйте опцию --wildcards:

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Распаковка с использованием шаблонов (wildcards)

Обратите внимание на кавычки: они защищают шаблон от интерпретации оболочкой.

Распаковка без восстановления структуры директорий

Если вы хотите извлечь файлы без создания вложенной структуры директорий из архива, используйте --strip-components. Аргумент — число уровней, которые нужно отбросить:

tar -xvzf ukulele_songs.tar.gz --strip-components=1

--strip-components=1 убирает верхний уровень (например, папку “Ukulele Songs”), и её содержимое помещается прямо в текущую директорию. Если в архиве два уровня вложенности, можно использовать --strip-components=2 и т.д.

Распаковка с --strip-components=1

Распаковка с --strip-components=2

Часто полезные опции и шпаргалка по командам

Краткая справка и наиболее используемые комбинации:

  • tar -xvzf file.tar.gz — распаковать gzip-архив с подробным выводом.
  • tar -xvjf file.tar.bz2 — распаковать bzip2-архив.
  • tar -xvJf file.tar.xz — распаковать xz-архив.
  • tar -tf file.tar.gz — посмотреть содержимое архива без распаковки.
  • tar -xvf file.tar --directory=/path/to/dir или -C /path/to/dir — распаковать в указанную папку.
  • tar -xvzf file.tar.gz --strip-components=1 — отбросить верхний уровень директорий.

Дополнительные советы:

  • Если не уверены в флаге сжатия, используйте явный флаг или сначала просмотрите -t.
  • Для архивов с нестандартным методом сжатия (например, zstd) может потребоваться дополнительная программа или опция --use-compress-program.

Безопасность: на что обращать внимание

Важно: архивы из ненадёжных источников могут содержать пути вроде ../ или абсолютные пути /etc/passwd, которые при прямой распаковке могут перезаписать файлы вне целевой папки. Чтобы снизить риск:

  • Просмотрите содержимое архива командой tar -tf archive.tar.gz перед распаковкой.
  • Используйте --strip-components или распаковывайте в пустую временную директорию, затем перемещайте проверенные файлы.
  • Никогда не распаковывайте архивы с непроверенных источников от имени root без предварительной проверки.

Пример безопасного процесса распаковки:

  1. Создайте временную директорию: mkdir -p ~/tmp/extract_test.
  2. Просмотрите содержимое: tar -tf archive.tar.gz | sed -n '1,100p'.
  3. Распакуйте в временную директорию: tar -xvzf archive.tar.gz -C ~/tmp/extract_test.
  4. Проверьте файлы и права, затем переместите нужные в целевые локации.

Ошибки, с которыми можно столкнуться, и способы их устранения

  • “Cannot open: No such file or directory” — проверьте, находитесь ли вы в правильной директории и правильно ли указано имя архива.
  • “Cannot write: No space left on device” — проверьте свободное место df -h.
  • Разрешения: если распаковка завершается с ошибками прав доступа, проверьте владельца и права в архиве; при необходимости используйте sudo с осторожностью.
  • Повреждённый архив: попробуйте gunzip -t file.tar.gz или bzip2 -tv file.tar.bz2 для проверки целостности сжатого слоя.

Когда указанные команды не подойдут (ограничения и исключения)

  • Если архив был создан с нестандартными расширениями или сжатиями (zstd, lz4 и т.п.), может потребоваться отдельный инструмент или опция --use-compress-program.
  • В окружениях с минимальным набором утилит (встроенные BusyBox без bzip2) некоторые флаги могут отсутствовать.
  • На Windows без WSL придётся использовать сторонние утилиты (7-Zip, PeaZip) с собственным интерфейсом.

Руководство по восстановлению и откату (incidents)

Если при распаковке файлы оказались не там или были перезаписаны, выполните следующие шаги:

  1. Немедленно остановите дальнейшие действия, чтобы избежать дополнительного перезаписывания.
  2. Если у вас есть бэкап или снимок (snapshot) файловой системы, восстановите из него.
  3. Если нет бэкапа, попробуйте найти список распакованных файлов с помощью tar -tf archive.tar.gz и удалить их с проверкой: xargs -a <(tar -tf archive.tar.gz) -I{} printf "%s\n" "{}" | sed 's:^/:/:' | xargs -I{} rm -v "{}" — выполнять внимательно и только если точно уверены в путях.
  4. Для критических систем рассмотрите восстановление с образа или обращение к специалисту по восстановлению данных.

Критерии приёмки: после восстановления проверьте, что:

  • Все ожидаемые системные файлы на месте.
  • Права доступа соответствуют ожидаемым.
  • Система загружается и приложения запускаются корректно.

Роли и контрольные списки

Администратор:

  • Проверить источник архива.
  • [ ] Просмотреть содержимое (tar -tf).
  • Распаковать в тестовую директорию.
  • Проверить разрешения и владельцев файлов.
  • Перенести в рабочую директорию.

Разработчик / пользователь:

  • [ ] Использовать флаг -v при отладке.
  • При извлечении отдельных файлов — использовать точные пути и кавычки.
  • [ ] При массовой распаковке — использовать --strip-components, если нужно убрать лишние уровни.

Сравнение быстрых подходов (cheat sheet)

  • Быстрая распаковка целого архива (gzip): tar -xvzf file.tar.gz
  • Распаковка bzip2: tar -xvjf file.tar.bz2
  • Просмотр: tar -tf file.tar.gz
  • Распаковка в указанную папку: tar -xvf file.tar -C /path/to/dir
  • Убрать один уровень директорий: tar -xvzf file.tar.gz --strip-components=1

Совместимость и миграция

  • Linux, macOS и WSL (Windows Subsystem for Linux) обычно имеют GNU tar или совместимую реализацию, поэтому команды из этой статьи будут работать в большинстве случаев.
  • На чистой Windows лучше использовать 7-Zip или WSL для выполнения тех же шагов в знакомой среде.
  • Для новых форматов сжатия (.zst / zstd) может потребоваться установка дополнительных утилит и использование опции --use-compress-program, либо предварительное разархивирование внешним инструментом.

Короткое резюме и ключевые выводы

  • Tar — это инструмент для упаковки и извлечения наборов файлов; сжатие и архивирование — часто два шага (tar + gzip/bzip2/xz).
  • Используйте -x для извлечения, -t для просмотра, -C для указания директории и --strip-components для контроля структуры каталогов.
  • Проверяйте содержимое перед распаковкой и не распаковывайте подозрительные архивы от имени root.

Полезные команды и конфигурационные шаблоны

Шаблон безопасной распаковки в временную папку:

mkdir -p ~/tmp/extract_check
tar -tf archive.tar.gz | sed -n '1,200p'
# Если всё в порядке:
tar -xvzf archive.tar.gz -C ~/tmp/extract_check
# Проверяем содержимое и права, затем переносим
rsync -a --progress ~/tmp/extract_check/ /final/destination/

Пример: распаковать только файлы с расширением .odt из архива:

# Просматриваем и фильтруем список
tar -tf ukulele_songs.tar.gz | grep '\.odt$'
# Извлекаем найденные файлы
tar -xvzf ukulele_songs.tar.gz --wildcards -f ukulele_songs.tar.gz "*\.odt"

Заключение

Работа с tar-архивами — базовый навык при администрировании Linux и при разработке ПО. Запомните небольшое число часто используемых опций и всегда действуйте осторожно с архивами из ненадёжных источников: проверяйте содержимое перед извлечением и используйте целевые/временные директории.


Команды Linux
Файлыtar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr
Процессыalias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Сетьnetstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Отключить уведомления в Windows 11 — быстро
Windows 11

Отключить уведомления в Windows 11 — быстро

Магические методы Python — руководство
Python

Магические методы Python — руководство

Как открыть .DPP файл в Windows
Программное обеспечение

Как открыть .DPP файл в Windows

GeekTool для macOS — виджеты и команды
macOS

GeekTool для macOS — виджеты и команды

Как найти приложения для Android Wear 2.0
Android.

Как найти приложения для Android Wear 2.0

Как размыть фон в Canva: 3 простых способа
Дизайн

Как размыть фон в Canva: 3 простых способа