powershell 7zip скрипт архивирования
Архивирование и распаковка ZIP архивов в PowerShell
В модуле Microsoft.PowerShell.Archive (C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Archive) есть всего два командлета:
Рассмотрим примеры использования этих командлетов для создания и распаковки ZIP архивов в ваших PowerShell скриптах.
Как создать ZIP архив в PowerShell с помощью Compress-Archive?
Команда Compress-Archive имеет следующий синтаксис:
Compress-Archive [-Path] String[] [-DestinationPath] String [-CompressionLevel String ] [-Update]
Чтобы заархивировать один файл, выполните:
Можно заархивировать все содержимое нескольких каталогов (все файлы и подкаталоги):
Можно добавить в ZIP архив только файлы с определенной маской. Например, следующая команда запакует только файлы с расширением *.txt.
С помощью Get-ChildItem можно использовать более сложные фильтры. Например, следующий скрипт позволит найти на диске топ 10 самых больших файлов с расширением *.docx или *.xlsx и добавит их в архив:
Чтобы добавить в существующий zip архив новые файлы, используйте ключ Update:
Как распаковать ZIP архив в PowerShell с Expand-Archive?
Для разархивирования ZIP файлов можно использовать командлет Expand—Archive.
Синтаксис командлета аналогичный:
Expand-Archive [-Path] String [-DestinationPath] String [-Force] [-Confirm]
Например, чтобы распаковать созданный нами ранее ZIP-архив в указанный каталог с перезаписью файлов, выполните:
Из недостатков модуля архивирования PowerShell стоит отметить:
Архивирование в PowerShell с помощью класса ZipFile
Чтобы заархивировать каталог, используйте такой скрипт:
Чтобы обновить ZIP архив и указать степень сжатия, используйте такой код PowerShell:
Можно вывести содержимое ZIP архива:
Или можно вывести содержимое zip архива в виде таблицы Out-GridView с указанием степени сжатия:
Для разархивирования ZIP архива в каталог C:\Logs, используйте следующие команды:
Работа с 7zip из командной строки
Приведенные ниже команды выполняются после перехода в каталог с установленным 7-Zip. Как правило, это:
cd «C:\Program Files\7-Zip»
Распаковать и заархивировать
Распаковка
Синтаксис для распаковки:
* ключ x распаковывает с сохранением каталожной структуры; e — все в одно место.
* в данном примере мы распакуем файл c:\temp\archive.7z в папку c:\temp
Архивация
Синтаксис для архивирования:
* в данном примере мы создадим zip-архив с уровнем компрессии 5; в архив попадет все содержимое всех каталогов; название для файла c:\temp\archive.zip; запаковываем все содержимое папки c:\temp.
* в данном примере мы архивируем файлы c:\temp\file1.txt, c:\temp\file2.txt, c:\temp\file3.txt с низкой компрессией 1; в итоге будет получен архив c:\temp\archive.7z.
Резервное копирование с помощью 7-Zip
Один из самых распространенных примеров использования 7zip из командной строки — резервирование данных.
Для начала переходим в каталог с установленной программой:
cd «C:\Program Files\7-Zip\»
* так как в пути имеется пробел, его необходимо писать в кавычках.
Сама команда выглядит следующим образом:
Полный пример cmd-скрипта для резервного копирования:
set source=»C:\Date»
set destination=»C:\Temp»
set passwd=»Password»
set dd=%DATE:
6,4%
set curdate=%dd%-%mm%-%yyyy%
Пример Powershell скрипта для резервного копирования:
Описание ключей и команд 7z
В синтаксисе работы с 7zip идут команды и ключи.
Описание основных команд
Команда | Описание |
---|---|
a | Добавление файлов в архив. Если архивного файла не существует, создает его. |
d | Удаление файла из архива |
e | Извлечение файлов из архива. Все файлы оказываются в одной папке. |
l | Вывод содержимого архива. |
rn | Переименовывание файла внутри архива. |
u | Обновление файлов в архиве. Если файла нет, создает новый. |
x | Извлечение файлов из архива. Пути сохраняются. |
Описание ключей
Другие полезные ключи:
Примеры
Исключение файлов и папок
Отдельно стоит рассказать про возможность исключения. Есть два варианта ее применения.
Первый — создать список исключений в отдельном файле.
* где exclus.txt — файл с исключениями.
Пример файла с исключениями:
* в данном примере мы исключаем каталог с именем test и все файлы с расширением tmp.
Второй — указать исключение в команде.
Резервирование баз 1С
Создание ZIP архива с помощью PowerShell
Обычно при необходимости автоматизировать создание архивных копий я использую утилиту 7zip. Она бесплатна, удобна в использовании и имеет интерфейс командной строки, что позволяет использовать ее в скриптах. Однако установка стороннего софта на сервер не всегда возможна, поэтому при необходимости можно создавать zip архивы, используя встроенный в Windows функционал.
Загрузив сборку, можно приступать к архивации. Для этого используем статический метод CreateFromDirectory класса ZipFile. Для создания архива из директории этому методу необходимо в качестве аргументов передать исходную директорию и имя конечного zip-файла. Например:
В методе CreateFromDirectory можно задать уровень сжатия:
• Optimal — оптимизация по уровню сжатия;
• Fastest — оптимизация по затрачиваемому времени;
• NoCompression — без сжатия.
А также можно указать, включать ли в архив базовый каталог или нет. Для примера еще раз создадим архив с уровнем сжатия Optimal и укажем не включать в него базовый каталог:
При создании архива надо помнить о том, что метод не умеет перезаписывать существующие файлы, и если в указанной директории уже есть zip-файл с таким именем — то он выдаст ошибку.
Операция, обратная архивации — разархивирование. Для этого используем метод ExtractToDirectory. Для работы ему нужно передать исходный zip-файл и директорию, в которую его надо распаковать. Для примера распакуем созданный ранее архив:
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Как архивировать и распаковывать файлы с помощью PowerShell
Формат файла ZIP уменьшает размер файлов, сжимая их в один файл. Этот процесс экономит дисковое пространство, шифрует данные и позволяет легко обмениваться файлами с другими. Вот как можно сжать и разархивировать файлы с помощью PowerShell.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Как архивировать файлы с помощью PowerShell
Сначала откройте PowerShell, выполнив поиск в меню «Пуск», а затем введите следующую команду, заменив PathToFiles и PathToDestination на путь к файлам, которые вы хотите сжать, а также на имя и папку, в которую вы хотите перейти, соответственно:
Примечание. Кавычки вокруг пути необходимы только в том случае, если путь к файлу содержит пробел.
В качестве альтернативы, чтобы сжать все содержимое папки и все ее подпапки, вы можете использовать следующую команду, заменив PathToFolder и PathToDestination на путь к файлам, которые вы хотите сжать, а также на имя и папку, которую вы хотите. чтобы перейти соответственно:
В предыдущем примере мы указали путь к каталогу с несколькими файлами и папками без указания отдельных файлов. PowerShell берет все внутри корневого каталога и сжимает его, а также все подпапки.
Выше мы рассмотрели, как включить корневой каталог и все его файлы и подкаталоги при создании архивного файла. Однако, если вы хотите исключить корневую папку из Zip-файла, вы можете использовать подстановочный знак, чтобы исключить ее из архива. Добавляя звездочку (*) в конец пути к файлу, вы указываете PowerShell только захватить то, что находится внутри корневого каталога. Это должно выглядеть примерно так:
Примечание. Подкаталоги и файлы корневой папки не включаются в архив этим методом.
Наконец, если вам нужен архив, который сжимает файлы только в корневом каталоге и во всех его подкаталогах, вы должны использовать подстановочный знак «звезда-точка-звезда» (*. *) Для их сжатия. Это будет выглядеть примерно так:
Примечание. Подкаталоги и файлы корневой папки не включаются в архив этим методом.
Как распаковать файлы с помощью PowerShell
Помимо возможности архивировать файлы и папки, PowerShell имеет возможность разархивировать архивы. Процесс даже проще, чем их сжатие; все, что вам нужно, это исходный файл и место для данных, готовых к распаковке.
Откройте PowerShell и введите следующую команду, заменив PathToZipFile и PathToDestination на путь к файлам, которые вы хотите сжать, а также на имя и папку, в которую вы хотите перейти, соответственно:
Папка назначения, указанная для извлечения файлов, будет заполнена содержимым архива. Если папка не существовала до разархивирования, PowerShell создаст папку и поместит содержимое в нее перед разархивированием.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Powershell 7zip скрипт архивирования
Powershell module for creating and extracting 7-Zip archives supporting Powershell’s WriteProgress API.
Please note that this repository is not maintained anymore. I’ve created it a couple of years ago to fit my own needs (just compressing a single folder). I love that lots of other users find my package helpful.
I really appreciated if you report issues or suggest new feature. However, I don’t use this package myself anymore, and I don’t have the time to maintain it appropriately. So please don’t expect me to fix any bugs. Any Pull Request is welcome though.
The syntax is simple as this:
It works with both x86 and x64 and uses SevenZipSharp as a wrapper around 7zip’s API.
Jason Fossen wrote the article PowerShell 7-Zip Module Versus Compress-Archive with Encryption where he describes some usage scenarios with 7Zip4PowerShell.
7Zip4Powershell is published at PowerShell Gallery.
Compress-7Zip accepts a script block for customization. The script block gets passed the current SevenZipCompressor instance. E.g. you can set the multithread mode this way:
A list of all custom parameters can be found here.
I’ve written and maintaining the module just for fun and to serve my own needs. If it’s useful for you too, that’s great. I don’t demand anything in return.
However, if you like this module and feel the urge to give something back, a coffee or a beer is always appreciated. Thank you very much in advance.
About
Powershell module for creating and extracting 7-Zip archives