UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

211 lines (128 loc) 10.4 kB
[7-Zip](https://en.wikipedia.org/wiki/ru:7-Zip "wikipedia:ru:7-Zip") — свободный файловый архиватор с высокой степенью сжатия данных. *p7zip* - портированная консольная версия 7-Zip для систем стандарта [POSIX](https://en.wikipedia.org/wiki/ru:POSIX "wikipedia:ru:POSIX"), включая Linux. ## Contents * [1 Установка и использование](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.B8_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5) * [2 Синтаксис](#.D0.A1.D0.B8.D0.BD.D1.82.D0.B0.D0.BA.D1.81.D0.B8.D1.81) * [2.1 Команды](#.D0.9A.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D1.8B) * [2.2 Ключи](#.D0.9A.D0.BB.D1.8E.D1.87.D0.B8) * [3 Резервное копирование и ограничения](#.D0.A0.D0.B5.D0.B7.D0.B5.D1.80.D0.B2.D0.BD.D0.BE.D0.B5_.D0.BA.D0.BE.D0.BF.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.BE.D0.B3.D1.80.D0.B0.D0.BD.D0.B8.D1.87.D0.B5.D0.BD.D0.B8.D1.8F) * [4 Диагностика](#.D0.94.D0.B8.D0.B0.D0.B3.D0.BD.D0.BE.D1.81.D1.82.D0.B8.D0.BA.D0.B0) * [5 Дополнительные ссылки](#.D0.94.D0.BE.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D1.81.D1.81.D1.8B.D0.BB.D0.BA.D0.B8) ## Установка и использование [Установите](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.BE.D0.B2 "Pacman (Русский)") пакет [p7zip](https://www.archlinux.org/packages/?name=p7zip), который доступен в [официальных репозиториях](/index.php/Official_repositories_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Official repositories (Русский)"). Этот пакет включает в себя три бинарника, `/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](https://en.wikipedia.org/wiki/MIPS "wikipedia: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](/index.php/Tar "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](http://p7zip.sourceforge.net/) [7-Zip](http://www.7-zip.org/)