7-zip архивация через BAT-файл, в один клик
Теория по созданию архиватора через BAT-файл
Код нашего скрипта будет состоять из 4-х частей:
Путь к программе, в нашем случае 7-zip стандартный путь C:\Program Files\7-Zip
Действие, которое мы хотим от 7-zip
Условия (параметры) выполнения нашей команды
На первом месте идет путь к архиву, на втором путь к данным, которые нужно архивировать.
Например: G:\archive\archive.7z D:\MyFolder
Создание архиватора через BAT-файл
Задача: создать BAT-файл, который будет сжимать всё содержимое папки project на диске C:/ максимальным уровнем сжатия и помещать созданный архив в папку backup на том же диске.
Создаем BAT-файл
На диске C:/, создаем папку project. В эту папку поместите какие нибуть файлы, например, фото
В любом путом месте (например, рабочий стол) нажимаете правой кнопкой мыши и выбираем Создать->Текстовый документ.
Меняем расширение файла с .txt на .bat
Если у вас не отображается расширение, на Windows 10 зайдите в «Этот компьютер», перейдите во вкладку Вид и поставте галочку «Расширения имен и файлов»
Кликаем правой кнопкой мыши на созданный файл и нажимаем Изменить. Откроется обычный блокнот, в нем нам и нужно написать скрипт.
| «C:\Program Files\7-Zip\7z.exe» | Наш путь в программе, через которую мы хотим архивировать |
| a | команда добавить в архив |
| -mx9 | ключ, который указываем что добавить в архив нужно с максимальным уровнем сжатия (об этом говорит цифра 9) |
| C:\backup\archive.7z | Первый элемент пути к папкам и файлам, указывает КУДА нужно поместить созданный архив |
| C:\project | Второй элемент пути к папкам и файлам, указывает ЧТО нужно архивировать |
Готово! Сохраните внесенные изменения, закройте файл и запустите. Должен создаться архив в нашей папке backup
На этом можно было бы остановиться, но обязательно ли постоянно прописывать путь к программе 7zip? Что если не нужно архивировать не все файлы в папке? Как в название архива добавить дату, когда он был сделан?
Разберем каждый пункт по порядку.
Привязываем путь к программе 7zip к переменной
Готово! Теперь код будет выглядеть компактнее, в BAT-файле замените «C:\Program Files\7-Zip\7z.exe» на 7z
Исключаем ненужные файлы из архивации
| -xr!file.png | Исключаем файлы с именем и расширением file.png |
| -xr!*.png | Исключаем файлы с расширением .png, неважно имя файла |
| -xr!file.* | Исключаем файлы с именем file, неважно расширение файла |
| -xr!file | Исключаем папки с именем file |
| -xr!file*.* | Исключаем файлы, имя которых начинается на file%, например file01.txt в архив не попадет |
| -xr!*file*.* | Исключаем файлы, имя которых содержит %file%, например 01file01.png в архив не попадет |
Теперь на основе полученных данных модернизируйте BAT-файл, если необходимо
Добавляем дату и время создания архива в название
В Window есть две системные переменные, которые будем использовать
| DATE | Возвращает текущую системную дату в формате: 01.01.2020 |
| Time | Возвращает текущее системное время в формате: 15:29:55,03 |
Чтобы добавить их в название файла архива, достаточно обозначить эти переменные знаком % с обоих сторон
Добавьте эти переменные в название архива, отделите их нижним подчеркиванием, чтобы дата и время не сливались и в конце скрипта с добавьте новую команду pause, чтобы BAT-файл не закрывался сразу, как по примеру ниже
Сохраните и запустите!
После запуска должна возникнуть оишбка Синтаксическая ошибка в имени файла, имени папки или метке тома.
Причина проста: формат переменной Time 12:23:38, а в Windows в названии файлов запрещено испольвать двоеточия «:«
Для решения данной проблемы выведем только часы и минуты в название.
| % | Начало объединения текста и системной переменной (конкатенация) | |||||||||||||||||||||||||||
| Time | Системная переменная показывающее текущее системное время в формате: 15:29:55,03 | |||||||||||||||||||||||||||
| : Сохрание и запустите! Проблема решена, теперь названия архивных файлов будут выглядеть примерно так: archive_20.05.2020_13_33.7z Рефакторинг и оптимизация завершены При необходимости можете настроить запуск данного файла по расписанию для этого переходите по ссылке Использование 7zip для бэкапа данныхДля наступления полного и тотального счастья в плане бэкапов информации на рабочем сервере решил отказаться от Acronis True Image в пользу обычной архивации данных с помощью 7-Zip. Для выполнения поставленной задачи естественно использовал консольную версию архиватора. После непродолжительного курения манов комманда приняла следующий вид: Поподробней об использованных ключах: -tzip формат архива установлен в zip, без этого ключа умолчальный формат 7z; -ssw принудительная упаковка файлов, которые в данный момент открыты для записи (мало ли кто-то засиделся на работе и что-то там правит); -mx7 высокая степень сжатия (7), можно поставить и 5 (нормальное сжатие), тогда процесс пойдет побыстрее; -r0 (это ноль, а не буква О) исключения, которые будут прописаны дальше обрабатываются только в рабочем каталоге; 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 А потом закатываю все в текстовый файл, для последующего изучения: findstr /P /I /V «Compressing 7-Zip» >> log_file Теперь дело за малым. Нужно зафутболить все три блока в одну последовательность команд: 7zip, без сомнения, является функциональным и мощным архиватором (по словам разработчиков, позволяющим достичь максимальной степени сжатия данных). На данном ресурсе уже была опубликована статья с описанием процесса его установки и использования. Но в ней обсуждались лишь базовые возможности архиватора, доступные в результате использования «параметров-букв». В этой же статье мы постараемся рассмотреть дополнительные функции данного инструмента, доступные в результате использования классических параметров командной строки. Но перед тем, как перейти непосредственно к рассмотрению этих функций, следует упомянуть о том, что все инструкции и команды, упомянутые в статье, были протестированы в системе Ubuntu 16.04 LTS. Примечание: в ходе выполнения различных операций с помощью архиватора 7zip будут использоваться файлы с именами, приведенными на расположенной ниже иллюстрации. Включение в архив отдельных файлов Исключение отдельных файлов из рассмотрения архиваторомНапример, если вам нужно исключить из рассмотрения архиватором файл с именем abc.7z в процессе создания нового архива, вы можете воспользоваться следующей командой: А это вывод данной команды: Для того, чтобы убедиться в отсутствии в созданном архиве файла с именем abc.7z вы можете воспользоваться следующей командой: Из вывода очевидно, что файл с именем abc.7z был исключен из нового архива. Защита архива с помощью пароля Установка целевой директорииПредположим, к примеру, что вы выполнили следующую команду в текущей директории: Создание многотомных архивовВы можете указывать размер подархивов в байтах ( b ), килобайтах ( k ), мегабайтах ( m ) и гигабайтах ( g ). Это содержимое данной директории: Теперь мы можем выполнить следующую команду для создания многотомного архива (с подархивами размером в 100 байт каждый): Для ознакомления со списком созданных подархивов может использоваться команда ls : Установка степени сжатияЭто краткое описание упомянутых степеней сжатия: Например, в определенной директории имеется набор файлов и директорий, которые мы пытаемся сжимать с различными степенями сжатия. Чтобы вам было понятнее, это команда для создания архива со степенью сжатия 0 : По аналогии были исполнены команды для остальных степеней сжатия. А это список созданных файлов архивов (сгенерированный средствами команды ls ), причем в именах файлов содержится информация об использованных степенях сжатия, а в пятом столбце таблицы их результирующие размеры. Вывод технической информации об архиве Указание типа создаваемого архиваЕсли вам нужно создать архив определенного типа вместо архива 7zip (создаваемого по умолчанию), вы можете указать желаемый тип архива с помощью параметра t : В следующем примере показана процедура создания обычного zip-архива: Да, файл howtoforge.zip действительно является zip-архивом. Вы можете создавать архивы других поддерживаемых 7zip типов аналогичным образом. Заключение📑 Шпаргалка по архиватору 7z (7-Zip) в Linux Ubuntu/MintОбщее описание 7Z7-Zip является архиватором файлов с наивысшей степенью сжатия, с открытым исходным кодом. Первоначально она была разработана для Windows. Портированная на Linux 7zip также часто используется для извлечения DEB, RPM и ISO файлов. Кроме простого архивирования, 7zip может поддерживать шифрование AES-256, а также самораспаковывающиеся и многотомные архивы. Программа поддерживает 7Z (реализующий алгоритм сжатия LZMA), LZMA2, XZ, ZIP, Zip64, CAB, RAR (если установлен несвободный пакет p7zip-rar), ARJ, GZIP, BZIP2, TAR, CPIO, RPM, ISO, большинство образов файловой системы и форматов DEB. Степень сжатия в новом формате 7z на 30-50% лучше, чем в формате ZIP. 7Z использует плагины для обработки архивов. Установка программы 7Z в Linux Ubuntu/MintВ стандартных репозиториях Linux Ubuntu и Mint присутствуют три пакета, относящиеся к 7Z: Рекомендуется установить пакет p7zip-full (а не p7zip), поскольку это наиболее полный пакет 7Z, который поддерживает много различных архивных форматов. Если вы намереваетесь извлекать файлы RAR, вам также нужно установить пакет p7zip-rar. Поддержка вынесена в отдельный пакет плагина потому, что RAR — это проприетарный формат. Синтаксис программы 7zОсновные команды программы 7ZОсновные ключи команды 7ZПосмотреть все команды 7Z можно командой: Чтобы посмотреть полную документацию(Англ.): Примеры основного использования программы 7ZСоздание архиваДля создания архива используется команда a. Поддерживаемые форматы архивов для создания: 7Z, XZ, GZIP, TAR, ZIP и BZIP2. Если данный файл архива уже существует, он будет добавлять файлы в существующий архив, если нет — создаст. По умолчанию создается архив 7Z. Для упаковки в архив archive.7z файлов file01.c и file02.c в директории /home/user_name/ Для упаковки в архив archive.7z всего содержимого директории /home/user_name/ Файл archive.7z будет создаваться в текущей директории /home/user_name/. Создать архив с максимальной степенью сжатия Создать архив всех файлов за исключением файла file01.c Установить пароль на файл архива, например password Посмотреть содержимое архива Распаковка архиваДля распаковки архивов используются команды a и x Для извлечения содержимого из архива arch.7z в текущую директорию, выполните в терминале: Этом случае все файлы распакуются в текущую директорию без сохраненных путей. Чтобы распаковать файлы из архива с структурой директорий Если архив разбит на множество частей, используйте имя с наименьшим номером тома: Команда b измеряет скорость процессора и проверяет оперативную память на наличие ошибок. Тест показывает рейтинг в MIPS (миллион инструкций в секунду). Значение рейтинга рассчитывается по измеренной скорости процессора и нормализуется по результатам работы процессора Intel Core 2 с отключенной опцией многопоточности. Так что, если у вас Intel Core 2 Duo, номинальные значения должны быть близки к реальной частоте процессора. Архивирование и backup с 7zРазные есть подходы к решению задач. Программки бывают громоздкими и стоящими денег. какие то это оправданно стоят а какие то нет. Поэтому командная строка может элегантно помочь выйти из ситуации в совокупности с утилитой… взял с https://habrahabr.ru/post/72636/ + https://www.dmosk.ru/miniinstruktions.php?mini=7zip-cmd Пример1)После непродолжительного курения манов комманда приняла следующий вид: Поподробней об использованных ключах: -tzip формат архива установлен в zip, без этого ключа умолчальный формат 7z; -ssw принудительная упаковка файлов, которые в данный момент открыты для записи (мало ли кто-то засиделся на работе и что-то там правит); -mx7 высокая степень сжатия (7), можно поставить и 5 (нормальное сжатие), тогда процесс пойдет побыстрее; -r0 (это ноль, а не буква О) исключения, которые будут прописаны дальше обрабатываются только в рабочем каталоге; 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 А потом закатываю все в текстовый файл, для последующего изучения: findstr /P /I /V «Compressing 7-Zip» >> log_file Теперь дело за малым. Нужно зафутболить все три блока в одну последовательность команд: set source=»C:\Date» 6,4% Описание ключей команды 7zОписание основных команд
Описание ключейДругие полезные ключи:
Полный список ключей и команд можно получить командой 7z —help. Исключение файлов и папокОтдельно стоит рассказать про возможность исключения. Есть два варианта ее применения. Первый — создать список исключений в отдельном файле.* где exclus.txt — файл с исключениями. Пример файла с исключениями: * в данном примере мы исключаем каталог с именем test и все файлы с расширением tmp. |















