Форматы делятся на три группы: контейнеры (tar) — только собирают файлы
вместе, сжиматели (gzip, bzip2, xz) — сжимают один файл, архиваторы
(zip, rar, 7z) — сами и собирают, и сжимают.
| Формат | Расширение | Пакет |
|---|---|---|
| ZIP | .zip |
zip, unzip |
| RAR | .rar |
rar, unrar (non-free) |
| TAR | .tar |
предустановлен |
| GZIP | .gz |
предустановлен |
| BZIP2 | .bz2 |
предустановлен |
| XZ | .xz |
предустановлен |
| 7Z | .7z |
p7zip-full |
Все примеры дальше — вокруг одного каталога:
project/
├── app.py
└── data/
└── customers.csv
ZIP архивы#
Нужны пакеты zip и unzip (в Debian-подобных: apt install zip unzip).
# Создать архив каталога целиком
zip -r project.zip project/
# Добавить файл в уже собранный архив
zip project.zip notes.txt
# Распаковать в текущий каталог
unzip project.zip
# Распаковать в конкретный каталог
unzip project.zip -d ~/restore
# Посмотреть содержимое, не распаковывая
unzip -l project.zip
# Создать с паролем (спросит интерактивно)
zip -e -r project.zip project/
# Распаковать защищённый архив — пароль спросит здесь
unzip project.zip
Внутри ZIP сжимает каждый файл по отдельности — удобно точечно добавлять/забирать файлы, но на каталоге целиком ZIP проигрывает
tar.gzи7z.
RAR архивы#
Проприетарный формат: для создания нужен пакет rar, для распаковки
хватает бесплатного unrar (в Debian-подобных оба лежат в non-free).
# Создать архив каталога (a = add)
rar a project.rar project/
# С паролем (спросит интерактивно)
rar a -p project.rar project/
# Многотомный архив по 100 МБ каждый
rar a -v100m project.rar project/
# Распаковать с сохранением структуры каталогов
unrar x project.rar
# Ссыпать всё содержимое в текущую папку, пути отбрасываются
unrar e project.rar
Команды
rarиunrarсимметричны:rar x project.rarиrar e project.rarработают так же. Разницаx/e— только в сохранении путей.
TAR контейнеры#
tar сам не сжимает — склеивает файлы в один поток. Сжатие включается
фильтром-флагом: z — gzip, j — bzip2, J — xz.
| Флаг | Что делает |
|---|---|
c |
создать архив |
x |
извлечь |
t |
показать содержимое |
z |
фильтр gzip (.tar.gz) |
j |
фильтр bzip2 (.tar.bz2) |
J |
фильтр xz (.tar.xz) |
v |
подробный вывод |
f |
дальше — имя файла архива |
-C |
сменить каталог |
# Создать сжатый архив каталога (gzip)
tar -czf project.tar.gz project/
# То же с xz: сжатие сильнее, процесс медленнее
tar -cJf project.tar.xz project/
# Посмотреть содержимое, не распаковывая
tar -tzf project.tar.gz
# Распаковать в текущий каталог
tar -xzf project.tar.gz
# Распаковать в конкретный каталог
tar -xzf project.tar.gz -C ~/restore
GNU tar угадывает фильтр по расширению:
tar -xf project.tar.xzсработает так же, как-xzf/-xjf. Старый синтаксис без дефиса (tar zxvf …) ещё работает, но современный GNU-стиль — с дефисом.
GZ архивы#
gzip сжимает один файл: app-2026-06-30.log превращается в
app-2026-06-30.log.gz, оригинал по умолчанию удаляется.
# Сжать лог (оригинал удалится)
gzip app-2026-06-30.log
# Сжать, оставив оригинал (-k = keep)
gzip -k app-2026-06-30.log
# Максимальное сжатие (1..9, по умолчанию 6)
gzip -9 app-2026-06-30.log
# Распаковать (= gzip -d)
gunzip app-2026-06-30.log.gz
Сжатые логи читаются и grep-аются на лету, без распаковки:
zcat app-2026-06-30.log.gz # вывести в stdout
zless app-2026-06-30.log.gz # постранично
zgrep ERROR app-2026-06-30.log.gz # поиск по сжатому
Каталог так не сжать — сначала соберите его в tar:
tar -czf project.tar.gz project/.
XZ архивы#
Работает как gzip, но сжимает сильнее и медленнее — стандарт для образов дистрибутивов и пакетов.
# Сжать образ
xz raspi-lite.img
# Сжать, оставив оригинал
xz -k raspi-lite.img
# Максимальная степень (0..9; 9e — с агрессивной памятью под словарь)
xz -9e raspi-lite.img
# Распаковать (= xz -d)
unxz raspi-lite.img.xz
.tar.xzраспаковывается как и любой tar-архив:tar -xJf project.tar.xzили универсальноtar -xf project.tar.xz.
7z архивы#
Формат с наилучшим сжатием и поддержкой чужих форматов. Нужен пакет
p7zip-full (в Debian-подобных: apt install p7zip-full).
# Создать архив каталога
7z a project.7z project/
# Посмотреть содержимое
7z l project.7z
# Распаковать в текущий каталог
7z x project.7z
# Распаковать в конкретный каталог (путь сразу за -o, без пробела)
7z x project.7z -o$HOME/restore
# С паролем (спросит интерактивно)
7z a -p project.7z project/
7z xвскрывает и чужие форматы: тот же вызов распакуетproject.zip,project.tar.gzилиproject.rar.
Полезная связка — конвейер 7z + tar для распаковки на лету:
7z x -so project.tar.7z | tar xf - -C ~/restore