# p7zip (Русский)

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

7-Zip — свободный файловый архиватор с высокой степенью сжатия данных. p7zip - портированная консольная версия 7-Zip для систем стандарта POSIX, включая Linux.

## Установка и использование

Установите пакет p7zip, который доступен в официальных репозиториях.

Этот пакет включает в себя три бинарника, `/usr/bin/7z`, `/usr/bin/7za`, и `/usr/bin/7zr`. Их руководства (man-pages) объясняют различия в следующем:

- 7z использует плагины для обработки архивов;
- 7za автономный. 7za может обрабатывать меньше форматов, чем 7z, но не нуждается в чём-либо;
- 7zr также автономный. Является облегчённой версией 7za предназначенный только для .7z архивов.

Для запуска программы используйте эту простую команду:

    # 7z

## Синтаксис

    # 7z <команда> [-<ключ>] <название_архива> [<аргументы>]

Выражения в квадратных скобках (между '[' и ']') опциональны. Команды и ключи не чувствительны к регистру.

Примечание: <название_архива> должно быть первым в списке имён файлов и директорий после всех команд и ключей.

### Команды

- `a` Добавляет файлы в архив, либо создаёт новый архив.

    $ 7z a archive1.zip ./subdir/
    $ 7z a Files.7z *.txt -r

Первая добавляет все файлы и подкаталоги из директории subdir в архив archive1.zip. Файлы в архиве распологаются в каталоге subdir.Вторая рекурсивно добавляет все *.txt из текущей директории и поддиректорий:

- `b` Бенчмарк-тест. Показывает быстродействие в MIPS. Значение рейтинга определяется по измеренной скорости процессора и нормализуется с результатами Intel Core 2 с выключенной многопоточностью.

    $ 7z b [количество_итераций] [-mmt{N}] [-md{N}]
    $ 7z b -mmt1 -md26

Вы можете менять размер словаря для снижения потребления памяти параметром `-md{N`}. Параметр `-mmt{N`} задаёт количество потоков. Пример запускает бенчмарк с одним потоком и 64 MB словарём, который получается как 2^26 = 64MB

- `d` Удаляет файлы из архива.

    $ 7z d archive.zip *.bak -r

Рекурсивно удаляет *.bak:

- `e` Извлекает все файлы из архива в одну директорию. Для извлечения с сохранением путей используйте команду `x`.

    $ 7z e archive.zip -o./soft *.cpp -r

Извлекает все *.cpp файлы из архива archive.zip в директорию ./soft.

- `h` Высчитывает значения хэш. Поддерживает: CRC32, CRC64, SHA1, SHA256. По умолчанию используется CRC32.

    $ 7z h a.txt
    $ 7z h -scrcsha256 arc.7z

Расчёт CRC32 для файла a.txt и SHA256 для архива arc.7z

- `i` Выводит информацию о поддерживаемых форматах.

- `l` Список содержимого архива

    $ 7z l archive.zip

- `rn` Переименовывает файлы внутри архива.

    $ 7z rn <архив> <имя_файла> <новое_имя_файла> [ <имя_директори> <новое_имя_директории> ]

- `t` Тестирует целостность файлов в архиве.

    $ 7z t archive.zip *.doc -r

Проверяет все *.doc в archive.zip.

- `u` Обновляет старые файлы в архиве и добавляет тех, что раньше не было.

[Note (Русский)|Обновление непрерывного архива .7z может быть медленным, так как может потребовать рекомпрессию]

    $ 7z u archive.zip *.doc

Обновляет *.doc файлы в archive.zip.

- `x` Извлекает файлы с сохранением их путей.

    $ 7z x archive.zip
    $ 7z x archive.zip -o./soft *.cpp -r

Первый вариант извлекает всё из archive.zip в текущую директорию. Второй все *.cpp файлы из archive.zip в директорию ./soft.

Примечание: В последних релизах (начиная с версии 15.09) 7-Zip больше не сортирует файлы по расширению при добавлении в архив (что субъективно ухудшает степень архивации). Для возвращения старого поведения следует использовать флаг `-mqs`

### Ключи

Ключи могут быть использованы в любом порядке. Ключи не поддерживают пробелы и табуляции между ними и их значениями. Ключи к регистру не чувствительны, но некоторые из аргументов могут быть. Здесь рассмотрены лишь некоторые. С полным списком можно ознакомиться здесь `/usr/share/doc/p7zip/DOC/MANUAL/switches/index.htm`

    $ 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

Добавляет все файлы из директории dir1 в архив archive.7z используя "ultra settings".

          -t7z         7z архив
          -m0=lzma     lzma метод
          -mx=9        уровень компрессии = 9 (Ultra)
          -mfb=64      число fast bytes для LZMA = 64
          -md=32m      размер словаря = 32 mb
          -ms=on       непрерывный архив = on

    $ 7z a -sfx archive.exe dir1

Добавляет все файлы из директории dir1 в SFX (самораспаковывающийся) архив archive.exe.

Примечание: SFX архив ДОЛЖЕН оканчиваться на ".exe"

    $ 7z a -mhe=on -pmy_password archive.7z a_directory

Архивирует директорию a_directory в архив archive.7z с шифрованием данных и заголовков.

## Резервное копирование и ограничения

Важно: НЕ ИСПОЛЬЗУЙТЕ 7-zip для резервного копирования систем Linux/Unix! 7-zip не сохраняет значения владельца/группы для файлов.

В Linux/Unix, для резервного копирования директорий можно использовать tar:

    $ tar cf - directory | 7za a -si directory.tar.7z
      для резервного копирования

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

## Диагностика

7-Zip возвращает следующие коды своей работы:

    0      Normal (ошибок и предупреждений зафиксировано не было)
    1      Warning  (Предупреждение. Без критических ошибок. Например,
           некоторые файды не могут быть прочитаны во время компрессии.
    2      Fatal error (Критическая ошибка)
    7      Bad command line parameters (Не верно задан ключ или параметр)
    8      Not enough memory for operation (Не достаточно памяти)
    255    User stopped the process with control-C (or similar) (Пользователь
           отменил выполнение вручную)

## Дополнительные ссылки

p7zip

7-Zip

Categories:

- Data compression and archiving (Русский)
- Русский