Использование архиватора 7z для автоматического резервного копирования.
Столкнулся как то на работе с такой проблемкой, нужно было делать резервное копирование базы данных довольно большого объема. Сначала кинулся искать программу для этих целей. Нашел несколько. Но в силу ряда причин я остановился на использовании для этой цели бесплатного архиватора 7z. Зачем устанавливать еще какое-то ПО когда возможности установленного архиватор а прекрасно позволяют прекрасно справится с поставленной задачей?
Собственно говоря умные люди давно и успешно пользуются данной возможностью, однако не все любят разбираться в мануалах, да и со временем часто и густо бывает напряг. Поэтому я выкладываю с подробными и пошаговыми разъясненьями тот вариант который я успешно использовал в работе. Прежде всего создаем в текстовом редакторе (в блокноте)два файла. Это можно проделать в любом текстовом редакторе, (обычно в Блокноте), но если вы используете в командах пути к файлам с русскими символами необходимо задействовать редакторы, которые поддерживают DOS-кодировку (редактор менеджера FAR). Один из них будет с расширением .bat или .cmd(основной с помощью которого будет производится архивация) и второй с расширением txt (в нем будут указаны пути к файлам из которых будет браться информация для архивации).
Рассмотрим содержимое основного (можно просто скопировать этот кусок записи, сохранить с расширением txt, внести изменения под свою задачу и пересохранитьс расширением .bat или .cmd):
@echo off
set now=%TIME:~0,-3%
set now=%now::=.%
set now=%now: =0%
set now=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%_%now%
7z.exe a -tzip -ssw -mx7 -r0 -x!*.mdx D:\REZERV-COPY\ARH-BD_%now%.zip @listfile.txt
Теперь давайте подробно разберем что и для чего в этой записи, чтобы переделать данный файл под свои задачи.
Поподробней об использованных ключах архиватора (это очень хорошо расписано в мануале):
-tzip формат архива установлен в zip, без этого ключа по умолчанию формат 7z;
-ssw принудительная упаковка файлов, которые в данный момент открыты для записи (если кто то засиделся на работе и что-то там правит);
-mx7 высокая степень сжатия (7), можно поставить и 5 (нормальное сжатие), тогда процесс пойдет побыстрее;
-r0 (это ноль, а не буква О) исключения, которые будут прописаны дальше обрабатываются только в рабочем каталоге;
-xисключение которые не будем архивировать. Можно использовать маски типа *.cdx и т.п. следующий вид: -x!*.cdx; (то есть файлы с данными расширениями просто не будут паковаться в вашу резервную копию)
D:\REZERV-COPY\ARH-BD_%now%.zip-диск и путь куда будут складываться архивы (на диск Dв каталог REZERV-COPY, название архиваARH-BD_(дата и время создания))
@listfile.txt -название текстового файла в котом прописывается какие папки и файлы будут архивироваться
(напримерзапись: C:\base_OK\base1 - будет архивироваться содержимое папки base1 из каталога base_OK)
Строки приведенные ниже добавляют к имени архива дату и время создания архива.
set now=%TIME:~0,-3%
set now=%now::=.%
setnow=%now: =0%
set now=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%_%now%
Вот собственно и все, осталось только указать в диспетчерезадач путь до созданного файла с расширением .bat или .cmd и частоту его запуска. Думаю все, очень просто и не составляет не какого труда в реализации.
И одна тонкость. ВНИМАНИЕ!!! запускной файл с расширением .bat или .cmdи файл listfile.txt должны обязательно лежать в той же папке где находится архиватор!!! (В этом каталоге -C:\Program Files\7-Zip :) ).