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

p7zip (7zip) в Ubuntu: установка и примеры использования

• 7 min read • Инструменты • Обновлено 18 Nov 2025
p7zip в Ubuntu — установка и примеры
p7zip в Ubuntu — установка и примеры

p7zip — это порт консольной версии 7-Zip для Linux/Unix. В этой статье показано, как установить p7zip в Ubuntu, базовые и продвинутые команды (создание, распаковка, обновление, шифрование, разбивка), рекомендации по использованию для бэкапов и примеры скриптов и чек-листов для системных администраторов.

Введение

Если вы используете Microsoft Windows, то, вероятно, знакомы с 7-Zip — открытым архиватором с высокой степенью сжатия. На Linux/Unix его консольная версия называется p7zip. Она поддерживает формат .7z (высокая степень сжатия) и многие другие форматы для распаковки/архивации.

Краткое определение: p7zip — консольный порт 7-Zip для Linux/Unix; предоставляет утилиту 7z для создания и работы с архивами.

Ключевые возможности (кратко):

  • Поддержка 7z, zip, gzip, tar и множества других форматов.
  • AES-256 шифрование для 7z и zip.
  • Возможность создания самораспаковывающихся архивов (SFX) для Windows.
  • Инструменты командной строки для автоматизации.

В следующих разделах — пошаговые примеры, сценарии использования, рекомендации безопасности и чек-листы.

Поддерживаемые форматы

p7zip может работать с большим количеством форматов. Короткий перевод списка форматов для распаковки и упаковки:

  • Основные форматы упаковки: 7z, XZ, BZIP2, GZIP, TAR, ZIP, WIM.
  • Дополнительно распаковываются: AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RPM, SquashFS, UDF, UEFI, VDI, VHD, VMDK, XAR, Z.

Важно: поддержка форматов зависит от сборки и пакетов (например, p7zip-rar нужен для работы с RAR).

Загрузка и установка p7zip в Ubuntu

Установка в Ubuntu (инструкция проверена на Ubuntu 18.04 LTS):

sudo apt-get install p7zip-full p7zip-rar

Пакет p7zip-full включает исполняемый 7z и дополнительные возможности. p7zip-rar добавляет распаковку RAR.

Совет: на серверах используйте apt-get без GUI: добавьте -y для автоматической установки в скриптах.

sudo apt-get update && sudo apt-get install -y p7zip-full p7zip-rar

Синтаксис команды 7z

Команда, устанавливаемая пакетом, называется 7z. Её общий синтаксис:

7z [adeltux] [-] [SWITCH]  ...

Интерпретация:

  • Первая позиция — команда действия: a (add), x (extract with full paths), e (extract without paths), l (list), u (update), d (delete) и т. д.
  • SWITCH — дополнительные ключи, например -p (пароль), -m (параметры сжатия), -v (разделение), -sdel (удалить исходники после добавления).

Примеры: базовые операции

Создание архива .7z из всех файлов в каталоге (переходим в каталог):

$ 7z a files.7z *

Пример вывода на экране (команда в действии):

Архивация файлов с помощью 7zip

После выполнения будет создан файл files.7z в текущем каталоге.

Распаковка архива (без восстановления путей):

7z e files.7z

Распаковка с восстановлением структуры каталогов:

7z x files.7z

Распаковка архивов 7zip

Создание ZIP-архива с помощью 7z:

7z a archive.zip folder_or_files

Создать ZIP-файл через 7zip

Обновление существующего архива (добавление новых файлов):

7z u files.7z file5.txt

Обновление архива 7zip

Просмотр содержимого архива:

7z l files.7z

Список файлов в архиве 7zip

Удаление файла из архива:

7z d archive.7z path/inside/archive.txt

Если файл находится в подкаталоге внутри архива, можно указать -r для рекурсивного удаления (в официальной документации к 7z есть оговорки по использованию -r — используйте с осторожностью).

Полезные ключи и уровни сжатия

  • -mx=0..9 — уровень сжатия (0 — без сжатия, 9 — максимальная степень). По умолчанию часто используется -mx=5.
  • -m0=METHOD — выбрать метод сжатия (LZMA2, PPMd, BZip2 и т.д.).
  • -mhe=on — шифровать имена файлов (Hidden Encrypted Headers).
  • -pPASSWORD — задать пароль (небезопасно в командной строке: пароль будет виден в истории и в списке процессов).
  • -sdel — удалить исходные файлы после успешного добавления в архив.
  • -vSIZE — разбить архив на тома (пример: -v10m для 10 мегабайтных томов).
  • -tTYPE — задать тип архива (например, -tzip).
  • -sfx — создать самораспаковывающийся архив (SFX) для Windows (требует sfx-модуля).
  • -so / -si — читать/писать на stdout/stdin (удобно для конвейеров с tar).

Примеры:

Максимальное сжатие LZMA2:

7z a -t7z -m0=lzma2 -mx=9 archive.7z folder

Шифрование содержимого и имён файлов (AES-256):

7z a -t7z -mhe=on -p

Команда попросит ввести пароль интерактивно (это безопаснее, чем писать пароль в командной строке).

Разбивка архива на тома (по 100M):

7z a -v100m archive.7z folder

Тестирование архива:

7z t archive.7z

Рекомендации по бэкапам и предостережения

Автор 7-Zip предупреждает: не используйте формат 7z для бэкапов, если вам важно сохранить владельца и группу файлов в Linux/Unix. Формат 7z не хранит owner/group и дополнительные unix-метаданные (в отличие от tar).

Рекомендуемая методика для создания переносимого архива с сохранением Unix-метаданных: используйте tar + 7z на вход/выход.

Пример создания архива с сохранением владельцев и прав:

# сделать tar-архив в stdout и сжать его 7z, сохраняя метаданные
tar cf - directory | 7za a -si directory.tar.7z

# восстановление
7za x -so directory.tar.7z | tar xf -

Перевод оригинального предупреждения разработчиков (содержимое для внимания):

DO NOT USE the 7-zip format for backup purpose on Linux/Unix because :
- 7-zip does not store the owner/group of the file.

On Linux/Unix, in order to backup directories you must use tar :
- to backup a directory  : tar cf -  directory  |  7za  a  -si  directory.tar.7z
- to restore your backup : 7za x -so directory.tar.7z | tar xf -

If you want to send files and directories (not the owner of file) to others Unix/MacOS/Windows users, you can use the 7-zip format.
example : 7za a directory.7z  directory

Do not use "-r" because this flag does not do what you think.

Do not use directory/* because of ".*" files (example : "directory/*" does not match "directory/.profile")

Важно: это дословная техническая рекомендация — используйте tar для резервных копий, когда важны права и владельцы файлов.

Безопасность и шифрование

  • 7z поддерживает AES-256 для шифрования содержимого и заголовков (если включено -mhe=on).
  • Никогда не передавайте пароль в открытой форме в командной строке (ключ -pPASSWORD), если среда небезопасна.
  • Для автоматизации используйте защищённые хранилища секретов, переменные окружения, или ввод пароля через stdin/TTY.

Пример чтения пароля из файла с ограниченным доступом (не идеально, но чаще лучше, чем видимый в ps):

PASSWORD=$(cat /root/.7z_pass)
7z a -p"$PASSWORD" archive.7z folder

Убедитесь, что файл /root/.7z_pass имеет права 600 и доступен только нужному пользователю.

Автоматизация: пример скрипта для еженедельного бэкапа

Ниже — упрощённый пример скрипта, который делает tar-архив каталога, сжимает 7z, хранит ротацию из трёх файлов и использует защищённый пароль из файла.

#!/bin/bash
set -euo pipefail
BACKUP_DIR=/var/backups/myapp
SRC_DIR=/srv/myapp/data
PASSFILE=/root/.7z_pass
DATE=$(date +%F)
ARCHIVE=${BACKUP_DIR}/myapp-${DATE}.tar.7z
mkdir -p ${BACKUP_DIR}

# создать архив tar и сжать в 7z, сохраняя права/владельца
tar cf - ${SRC_DIR} | 7za a -si -p"$(cat ${PASSFILE})" -mhe=on ${ARCHIVE}

# ротация: оставить 3 файла
ls -1t ${BACKUP_DIR}/myapp-*.tar.7z | tail -n +4 | xargs -r rm --

Поместите этот скрипт в /usr/local/bin и добавьте cron:

0 3 * * 0 /usr/local/bin/myapp-backup.sh

Критерии приёмки: резервная копия должна распаковываться и содержать ожидаемые файлы, тест восстановления обязателен.

Рольные чек-листы

Системный администратор:

  • Установить p7zip-full и p7zip-rar.
  • Настроить безопасное хранение паролей (файлы с правами 600, Vault и т.п.).
  • Настроить cron для регулярных бэкапов и тестовое восстановление.
  • Документировать процедуру восстановления в runbook.

Разработчик / DevOps:

  • Использовать tar | 7za a -si для сохранения Unix-метаданных.
  • Добавить мониторинг пространства и уведомления об ошибках команды.
  • Автоматизировать тестирование целостности (7z t).

Обычный пользователь:

  • Для пересылки файлов коллегам выберите .7z или .zip с паролем.
  • При передаче больших файлов используйте разбивку -v.
  • Неставьте пароли в общедоступные скрипты.

Частые ошибки и решение проблем

Проблема: «Нет доступа» при распаковке

  • Проверьте права на файл и каталог назначения.
  • Если архив создавался с root и содержит владельцев, распаковка под другим пользователем может требовать sudo.

Проблема: «Corrupted archive» при распаковке

  • Проверьте контрольную сумму загруженного файла.
  • Используйте 7z t для тестирования архива.

Проблема: Нужен RAR

  • Установите p7zip-rar (распаковка RAR); создание RAR не поддерживается p7zip.

Выходные коды: 7z возвращает ненулевой код при ошибке. Для CI/скриптов обязательно обрабатывать ошибки (set -e или проверка $? ).

Альтернативы и когда p7zip не подходит

  • tar + gzip/bzip2/xz — лучше для локальных бэкапов с сохранением прав/владельцев.
  • zip/unzip — удобны для совместимости с Windows, но хуже сжатие по сравнению с 7z.
  • zx (или контейнерные форматы) — если нужны специфичные метаданные или транзакционные бэкапы.

Выбор руководствуется задачей: если важна максимальная степень сжатия — 7z; если критично хранение unix-метаданных — tar; если нужна совместимость с Windows-пользователями без дополнительных утилит — zip.

Быстрая шпаргалка (cheat sheet)

Создать .7z с максимальным сжатием:

7z a -t7z -m0=lzma2 -mx=9 archive.7z folder

Создать зашифрованный .7z (шифруются имена файлов):

7z a -t7z -mhe=on -p archive.7z folder

Создать zip:

7z a -tzip archive.zip folder

Распаковать с восстановлением путей:

7z x archive.7z

Посмотреть содержимое:

7z l archive.7z

Разбить на тома (по 100 MB):

7z a -v100m archive.7z folder

Тест архива:

7z t archive.7z

Удалить файл из архива:

7z d archive.7z path/inside/file.txt

Модель принятия решения (диаграмма)

flowchart TD
  A[Нужна высокая степень сжатия?] -->|Да| B[Использовать 7z]
  A -->|Нет| C[Нужна совместимость с Windows?]
  C -->|Да| D[Использовать zip]
  C -->|Нет| E[Нужны unix-метаданные?]
  E -->|Да| F[Использовать tar '+7z для сжатия']
  E -->|Нет| G[Выбор по удобству]

Критерии приёмки

  • Архив успешно создаётся без ошибок.
  • 7z t показывает, что архив не повреждён.
  • При использовании tar+7za восстановление возвращает файлы с ожидаемыми правами и содержимым.
  • Автоматизированный скрипт бэкапа завершает работу и сохраняет архив в целевой папке.

FAQ

Q: Можно ли использовать p7zip для бэкапов серверов?

A: Можно, но если важно сохранить владельцев/группы и права, комбинируйте tar и 7za (tar cf - dir | 7za a -si archive.tar.7z).

Q: Как безопасно передавать пароль для архива в скриптах?

A: Храните пароль в защищённом файле с правами 600 или используйте секретное хранилище (Vault, KMS) и извлекайте пароль в runtime.

Q: Поддерживает ли p7zip создание RAR?

A: Нет. p7zip может распаковывать RAR, но создание RAR-файлов не поддерживается.

Заключение

p7zip — мощный инструмент для сжатия и архивации на Linux. Он прост в установке, богат по функционалу и удобен для автоматизации. Для переносимых пакетов и пересылки файлов он отлично подходит; для критичных бэкапов используйте tar вместе с 7za, чтобы сохранить специфичные Unix-метаданные. Попробуйте базовые команды, затем добавьте шифрование и автоматизацию по мере необходимости.

Полезные ссылки: man 7z, официальная документация 7-Zip и страницы поддержки (SourceForge/Tom’s Hardware для исторической информации).

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро