Как распаковать файлы .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.
- Внимательно относитесь к архивам из ненадёжных источников: они могут перезаписать системные файлы при некорректной распаковке. Всегда проверяйте содержимое перед извлечением.

Быстрые ссылки
- Что означает .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 вы увидите список распакованных файлов в терминале и получите на диске директорию, которая была в архиве (если архив содержал корневую папку).

Если архив сжат bzip2 (.tar.bz2), используйте флаг -j вместо -z:
tar -xvjf guitar_songs.tar.bz2Пояснение: -j сообщает tar использовать bzip2 для распаковки. Поведение флагов -z/-j/-J соответствует формату сжатия.

Советы:
- Если вы не хотите видеть подробный список файлов, опустите
-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в большинстве реализаций.

При просмотре вы увидите структуру каталогов внутри архива, например 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*"
Обратите внимание на кавычки: они защищают шаблон от интерпретации оболочкой.
Распаковка без восстановления структуры директорий
Если вы хотите извлечь файлы без создания вложенной структуры директорий из архива, используйте --strip-components. Аргумент — число уровней, которые нужно отбросить:
tar -xvzf ukulele_songs.tar.gz --strip-components=1--strip-components=1 убирает верхний уровень (например, папку “Ukulele Songs”), и её содержимое помещается прямо в текущую директорию. Если в архиве два уровня вложенности, можно использовать --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 без предварительной проверки.
Пример безопасного процесса распаковки:
- Создайте временную директорию:
mkdir -p ~/tmp/extract_test. - Просмотрите содержимое:
tar -tf archive.tar.gz | sed -n '1,100p'. - Распакуйте в временную директорию:
tar -xvzf archive.tar.gz -C ~/tmp/extract_test. - Проверьте файлы и права, затем переместите нужные в целевые локации.
Ошибки, с которыми можно столкнуться, и способы их устранения
- “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)
Если при распаковке файлы оказались не там или были перезаписаны, выполните следующие шаги:
- Немедленно остановите дальнейшие действия, чтобы избежать дополнительного перезаписывания.
- Если у вас есть бэкап или снимок (snapshot) файловой системы, восстановите из него.
- Если нет бэкапа, попробуйте найти список распакованных файлов с помощью
tar -tf archive.tar.gzи удалить их с проверкой:xargs -a <(tar -tf archive.tar.gz) -I{} printf "%s\n" "{}" | sed 's:^/:/:' | xargs -I{} rm -v "{}"— выполнять внимательно и только если точно уверены в путях. - Для критических систем рассмотрите восстановление с образа или обращение к специалисту по восстановлению данных.
Критерии приёмки: после восстановления проверьте, что:
- Все ожидаемые системные файлы на месте.
- Права доступа соответствуют ожидаемым.
- Система загружается и приложения запускаются корректно.
Роли и контрольные списки
Администратор:
- Проверить источник архива.
- [ ] Просмотреть содержимое (
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 |
Похожие материалы
Отключить уведомления в Windows 11 — быстро
Магические методы Python — руководство
Как открыть .DPP файл в Windows
GeekTool для macOS — виджеты и команды
Как найти приложения для Android Wear 2.0