- Распаковать и заархивировать
- Распаковка
- Архивация
- Резервное копирование с помощью 7-Zip
- Полный пример cmd-скрипта для резервного копирования:
- Пример Powershell скрипта для резервного копирования:
- Описание ключей и команд 7z
- Описание основных команд
- Описание ключей
- Исключение файлов и папок
- Пример
- Описание ключей команды 7z
- Описание основных команд
- Описание ключей
- Исключение файлов и папок
- Первый — создать список исключений в отдельном файле.
Приведенные ниже команды выполняются после перехода в каталог с установленным 7-Zip. Как правило, это:
cd "C:Program Files7-Zip"
Распаковать и заархивировать
Распаковка
Синтаксис для распаковки:
* ключ x распаковывает с сохранением каталожной структуры; e — все в одно место.
7z x c: emparchive.7z -o"c: emp"
* в данном примере мы распакуем файл c: emparchive.7z в папку c: emp
Архивация
Синтаксис для архивирования:
7z a -tzip -mx5 -r0 c: emparchive.zip c: emp
* в данном примере мы создадим zip-архив с уровнем компрессии 5; в архив попадет все содержимое всех каталогов; название для файла c: emparchive.zip; запаковываем все содержимое папки c: emp.
7z a -mx1 c: emparchive.7z c: empfile.txt
* в данном примере мы архивируем файл c: empfile.txt с низкой компрессией 1; в итоге будет получен архив c: emparchive.7z.
Резервное копирование с помощью 7-Zip
Один из самых распространенных примеров использования 7zip из командной строки — резервирование данных.
Для начала переходим в каталог с установленной программой:
cd "C:Program Files7-Zip"
* так как в пути имеется пробел, его необходимо писать в кавычках.
Сама команда выглядит следующим образом:
7z a -tzip -ssw -mx1 -pPassword -r0 C:Tempackup.zip C:Data
* в данном примере мы архивируем содержимое папки C:Data и сохраняем в виде файла C:Tempackup.zip.
* описание ключей смотрите ниже или командой 7z —help.
Полный пример cmd-скрипта для резервного копирования:
set source="C:Date"
set destination="C:Temp"
set passwd="Password"
set dd=%DATE:
3,2%
set yyyy=%DATE:
6,4%
set curdate=%dd%-%mm%-%yyyy%
"C:Program Files7-Zip7z.exe" a -tzip -ssw -mx1 -p%passwd% -r0 %destination%ackup_%curdate%.zip %source%
* данный скрипт заархивирует содержимое каталога C:Data в файл C:Tempackup_ .zip. Полученный архив будет защищен паролем Password.
* содержимое необходимо сохранить в файле с расширением .cmd или .bat.
Пример Powershell скрипта для резервного копирования:
$source = "C:Date"
$destination = "C:Temp"
$passwd = "Password"
$curdate = (Get-Date -UFormat "%d-%m-%Y")
& "C:Program Files7-Zip7z.exe" a -tzip -ssw -mx1 -p$passwd -r0 $destinationackup_$curdate.zip $source
* данный скрипт также заархивирует содержимое каталога C:Data в файл C:Tempackup_ .zip. Полученный архив будет защищен паролем Password.
* содержимое необходимо сохранить в файле с расширением .ps1.
Описание ключей и команд 7z
В синтаксисе работы с 7zip идут команды и ключи.
Описание основных команд
Команда | Описание |
---|---|
a | Добавление файлов в архив. Если архивного файла не существует, создает его. |
d | Удаление файла из архива |
e | Извлечение файлов из архива. Все файлы оказываются в одной папке. |
l | Вывод содержимого архива. |
rn | Переименовывание файла внутри архива. |
u | Обновление файлов в архиве. Если файла нет, создает новый. |
x | Извлечение файлов из архива. Пути сохраняются. |
Описание ключей
Ключ | Описание |
---|---|
-t | Тип архива. По умолчанию создаются файлы в формате 7z. Примеры, -tzip, -tgz |
-ssw | Включить файл в архив, даже если он в данный момент используется. Для резервного копирования очень полезный ключ. |
-mx | Уровень компрессии. 0 — без компрессии (быстро), 9 — самая большая компрессия (медленно). |
-p | Пароль для архива. |
-o | Задает директорию, например, в которую будут распакованы файлы. |
-r | Рекурсивное архивирование для папок. Задается числом от 0 (все каталоги) до количества уровней каталогов, которые нужно включить в архив. |
Другие полезные ключи:
Ключ | Описание |
---|---|
-sdel | Удалить файлы после создания архива. |
-sfx | Создание самораспаковывающегося sfx-архива. |
-y | Утвердительно ответить на все вопросы, которые может запросить система. |
-x | Исключить файлы или папки из архива. |
Полный список ключей и команд можно получить командой 7z —help.
Исключение файлов и папок
Отдельно стоит рассказать про возможность исключения. Есть два варианта ее применения.
Первый — создать список исключений в отдельном файле.
Пример команды 7z:
7z.exe a -tzip -ssw -mx9 -r0 -x@exclus.txt C:Tempackup.zip C:Data
* где exclus.txt — файл с исключениями.
Пример файла с исключениями:
* в данном примере мы исключаем каталог с именем test и все файлы с расширением tmp.
Второй — указать исключение в команде.
возможность использования любого метода сжатия или преобразования информации; на данный момент поддерживаются следующие методы сжатия: LZMA (основан на алгоритме Лемпела-Зива (Lempel-Ziv)), PPMD (основанный на алгоритме Дмитрия Шкарина с небольшими изменениями), BCJ2 (преобразование 32-битных EXE-файлов), BZip2 (основан на алгоритме BWT), Deflate (основан на алгоритме Лемпела-Зива (Lempel-Ziv) и Хаффмана (Huffman));
поддержка файлов размером до 16000000000 Гб;
имена файлов хранятся в формате Unicode;
поддержка непрерывных архивов;
шифрование (по методу AES с ключом 256 бит);
сжатие заголовков архивов.
7z.exe — версия командной строки архиватора 7-Zip, использующая другие модули архиватора 7-Zip.
7za.exe — самостоятельная версия архиватора командной строки, не использующая других модулей архиватора 7-Zip, но поддерживающая только форматы архивов 7z и ZIP.
7zn.exe и 7zan.exe — оптимизированные под Windows NT/2000/XP, с улучшенной поддержкой формата unicode в именах файлов, версии командной строки 7z.exe и 7za.exe соответственно.
7z [ . ] [ . ] [ ]
a: Добавить файлы в архив
d: Удалить файлы из архива
e: Извлечь файлы из архива
l: Показать список файлов в архиве
t: Тестирование целостности архива
u: Обновить файлы в архиве
x: Извлечь файлы из архива с путями-bd Запретить процентный индикатор выполнения задания
-i[r[-|0]]<@список файлов|!символы множественной замены>: Включая следующие файлы
-m<Метод сжатия>: Задание метода сжатия
-o<Директория>: Задание выходной директории
-p<Пароль>: Задание пароля
-r[-|0]: Включая поддиректории
-sfx[<имя SFX-заготовки>]: Создать самораспаковывающийся архив, используя указанную SFX-заготовку
-t<тип>: Задать тип архива (это может быть zip, 7z, rar, cab, gzip, bzip2, tar или другой, по умолчанию 7z)
-u[-][p#][q#][r#][x#][y#][z#][!новое имя архива]: Параметры обновления/создания архива
-w[<путь>]: Задание рабочей директории, без указания пути подразумевается текущая временная директория
-x[r[-|0]]]<@список файлов|!символы множественной замены>: За исключение указанных файлов
-y: Отвечать Yes (Да) на все вопросыПримечание : выражения в квадратных скобках являются необязательными.
Для повышения стабильности часть кода перенесена из DLL-библиотеки в EXE-файл, поэтому теперь любые операции сжатия/распаковки в проводнике и в 7-Zip File Manager, вызванные через контекстное меню 7-Zip, выполняются отдельной программой;
Для архивов в формате 7z добавлено шифрование по методу AES с ключом 256 бит;
Добавлена поддержка шифрованных Rar3-архивов и архивов, содержащих Unicode имена файлов, также добавлена поддержка RAR-архивов, сделанных старой версией архиватора 1.50.
Добавлена поддержка разархивации ZIP-архивов, созданных по методу Deflate64;
Добавлена поддержка формата DEB;
Разрешено создание папок и переименование папок и файлов внутри архивов.
Скачать 7-Zip 2.30 Beta 27 (размер 1.07Mb): линк
Скачать исходный код 7-Zip 2.30 Beta 27 (размер 403Kb): линк
Скачать 7-Zip 2.24 (размер 463Kb): линк
Разные есть подходы к решению задач. Программки бывают громоздкими и стоящими денег. какие то это оправданно стоят а какие то нет.
Поэтому командная строка может элегантно помочь выйти из ситуации в совокупности с утилитой…
взял с https://habrahabr.ru/post/72636/ + https://www.dmosk.ru/miniinstruktions.php?mini=7zip-cmd
Пример
1)После непродолжительного курения манов комманда приняла следующий вид:
7za.exe a -tzip -ssw -mx7 -r0 -x@exclusions.txt full_path_for_the_archive working_dir
Поподробней об использованных ключах:
-tzip формат архива установлен в zip, без этого ключа умолчальный формат 7z;
-ssw принудительная упаковка файлов, которые в данный момент открыты для записи (мало ли кто-то засиделся на работе и что-то там правит);
-mx7 высокая степень сжатия (7), можно поставить и 5 (нормальное сжатие), тогда процесс пойдет побыстрее;
-r0 (это ноль, а не буква О) исключения, которые будут прописаны дальше обрабатываются только в рабочем каталоге;
-x@exclusions.txt это собственно говоря файл со списком исключений, которые не будем архивировать. Каждая строка файла — новое исключение. Можно использовать маски типа *.ext и т.п. Если исключение не много, то можно обойтись и без файла, в таком случае ключ примет следующий вид: -x!*.ext;
full_path_for_the_archive это соответственно путь и имя нового архива;
working_dir это папка, которая подлежит упаковке.
Для пущего удобства можно использовать в имени архива %date%.
В связи с тем, что архивировать нужно разные папки в разные архивы, объемами 10-15 гигов, то резонно использовать последовательность команд, дабы не создавать кучу правил в планировщике и не думать сколько времени займет весь этот процесс. Соответственно для этих целей использую объединение команд с помощью &&. Если использовать &, то все команды будут выполняться одновременно, что меня никак не устраивает, с && — последовательно при удачном завершении предыдущей команды.
Помимо всего прочего желательно иметь логи, чтоб быть в курсе, а не случилось ли чего. Это можно легко реализовать с помощью инструкции ‘>>’, которая сохраняет вывод в консоль в текстовый файл. Однако проблема в том, что 7zip вываливает в консоль кучу информации, в том числе и об архивации каждого нового файла. Очевидно, что на объемах в несколько тысяч файлов вся эта инфа в логах нужна как мертвому припарок. Соответственно требуется исключить все ненужные строки, оставив те, где есть информация о названии создаваемого архива, результат архивации и информацию об ошибках, коли таковые появятся.
Тут на помощь приходит команда FINDSTR. В моем случае она принимает следующий вид:
findstr /P /I /V «Compressing 7-Zip»
Сначала пара слов об использованных ключах:
/P пропускает строки, содержащие непечатные символы;
/I на всякий случай игнорирую регистр букв;
/V » « непосредственно перечень слов для поиска в строках и последующего исключения этих строк.
В итоге на выходе этой команды имеем 3 строки:
Creating archive archive_name
Everything is Ok
А потом закатываю все в текстовый файл, для последующего изучения:
findstr /P /I /V «Compressing 7-Zip» >> log_file
Теперь дело за малым. Нужно зафутболить все три блока в одну последовательность команд:
7za.exe a -tzip -ssw -mx7 -r0 -x@exclusions.txt full_path_for_the_archive working_dir | findstr /P /I /V «Compressing 7-Zip» >> log_file.%date%.txt
set source=»C:Date»
set destination=»C:Temp»
set passwd=»Password»
set dd=%DATE:
3,2%
set yyyy=%DATE:
6,4%
set curdate=%dd%-%mm%-%yyyy%
«C:Program Files7-Zip7z.exe» a -tzip -ssw -mx1 -p%passwd% -r0 %destination%ackup_%curdate%.zip %source% >> backup_log.%date%.txt
Описание ключей команды 7z
Описание основных команд
Команда | Описание |
---|---|
a | Добавление файлов в архив. Если архивного файла не существует, создает его. |
d | Удаление файла из архива |
e | Извлечение файлов из архива. Все файлы оказываются в одной папке. |
l | Вывод содержимого архива. |
rn | Переименовывание файла внутри архива. |
u | Обновление файлов в архиве. Если файла нет, создает новый. |
x | Извлечение файлов из архива. Пути сохраняются. |
Описание ключей
Ключ | Описание |
---|---|
-t | Тип архива. По умолчанию создаются файлы в формате 7z. Примеры, -tzip, -tgz |
-ssw | Включить файл в архив, даже если он в данный момент используется. Для резервного копирования очень полезный ключ. |
-mx | Уровень компрессии. 0 — без компрессии (быстро), 9 — самая большая компрессия (медленно). |
-p | Пароль для архива. |
Другие полезные ключи:
Ключ | Описание |
---|---|
-o | Задает директорию, например, в которую будут распакованы файлы. |
-sdel | Удалить файлы после создания архива. |
-sfx | Создание самораспаковывающегося sfx-архива. |
-y | Утвердительно ответить на все вопросы, которые может запросить система. |
-x | Исключить файлы или папки из архива. |
Полный список ключей и команд можно получить командой 7z —help.
Исключение файлов и папок
Отдельно стоит рассказать про возможность исключения. Есть два варианта ее применения.
Первый — создать список исключений в отдельном файле.
Пример команды 7z:
7z.exe a -tzip -ssw -mx9 -r0 -x@exclus.txt C:Tempackup.zip C:Data
* где exclus.txt — файл с исключениями.
Пример файла с исключениями:
* в данном примере мы исключаем каталог с именем test и все файлы с расширением tmp.