Поэтому приложив несколько интелекта я разработал пакет скриптов для создания инкрементальных бекапов.
Статья не окончена. Допишу полностью, если будут те, кому это интересно. или удалю, если никому не надо.
Требования следующие:
- бекап должен быть инкрементальным и время от времени полным
- формат должен быть открытым
- программа должна быть бесплатной
- возможность указания нескольких получателей (с учетом того, что не все могут быть доступны)
- работать должно быстро
- должно учитываться удаление файлов
- должно храниться несколько копий, а устаревшие удалялись автоматически.
- должна быть возможность назначать пароль для каталога
- возможность выбора степени сжатия для каталога
- возможность исключения файлов по каталогу / маске
Самая главная проблема — инкрементальный бекап. Многие программы могут делать время от времени полный, а между ними — инкрементальный. Но я не нашел программы, которая бы в случае если файлы не изменялись, не делала бы полный бекап.
Хотелось иметь возможность указания гранулярности анализа данных для формирования полных бекапов. Т.е. у меня несколько десятков каталогов для данных клиентов. И если данные изменились только в одном каталоге, то новый полный бекап нужно делать только для одного каталога. Но в тоже время, я не хочу в настройках указывать каждый каталог — состав постоянно меняется.
Для выполнения этих условий был рожден набор скриптов.
А именно три штуки:
MakeBackup.cmd — стартовый файл, который читает настройки из файла конфигурации.
Запускается без параметров, читает настройки из файла MakeBackup.cfg. Структура файла настроек следующая:
[SRC]
#В этом разделе указыватся источник файлов
#Первый параметр — каталог для архивирования
«C:Program FilesTotal Commander»
#Так же можно указать, какие файлы не требуется архивировать (/x) (указывается не маска файлов, а подстрока входящая в путь файла)
«C:Program FilesMdesktop» /x»logs;.tmp»
#Для вложенного каталога хотим отдельный архив
«C:Program Files1cv82″ /x»srvinfo»
«C:Program Files1cv82srvinfo
#Можно указать пароль (/p)
«C:Program FilesOpera» /pSuperPasword
#Можно указать, что для каждого вложенного каталога будет сделан отдельный архив (/s)
D:Books /s
#Можно указать степень сжатия (/m0…9, по умолчанию — 5)
D:Photo /m0
[DST]
#Список каталогов — приемников
H:Backup
S:RebelxBackup
[REM]
#Данные в секциях с другими именами не анализируются
продолжение — если кому-то будет интересно это продолжение
ниже — черновик
-LD Каталог лог-файлов =
-DS Каталог исходных файлов (возможно использование синтаксиса @filename) (обязательно)
-DD Каталог сохраненных файлов (обязательно)
-MX Маска файлов для исключения (возможно использование синтаксиса @filename) =
-PR Префикс имени архива = backup
-FF Частота создания полных архивов, в днях (рассчитывается с начала года), или W — еженедельно = W
-AT Тип архива: D — дифференциальный, F — полный, А — автоматический выбор = A
-HD Глубина сохранения логов, в днях: 0 — не удалять логи = 7
-BD Глубина сохранения полных копий: 0 — не удалять копии = 2
-7Z Путь к архиватору 7z = 7za.exe
-EX Расширение архива = 7z
-OP Дополнительные опции архиватора =
в качестве архиватора указывается 7z.cmd, который запускает 7z.exe с пониженным приоритетом:
@title 7z.cmd — running
start /LOW /B /WAIT 7z_4.65.exe %*
Тема, хоть и старая, но, наверное останеться актуальной до тех пор, пока будут существовать файлы на дисках, а появление решений такой задачи говорит о том, что идеального варианта не существует (наверное пока не существует — кто знает таковой — отзовитесь).
Статья интересная — автор, если сможешь — продолжай, особенно интересно решение 4 пункта функциональных возможностей (и есть ли у автора среди получателей DVD диск?), ну и среди пунктов возможностей может включить специфический для 1С — как быть в случае, если из базы кто-то не вышел.
ок. постараюсь сегодня дописать.
архивация на DVD не предусматривалась и не делалась.
У меня задача была — архивировать на внешний HDD когда нужный HDD подключался и на сервер время от времени.
специфичных задач архивации (1С, SQL) я тоже не делал — руки не дошли.
жду продолжения, или хотя бы файликов, на которые можно посмотреть…
(1) «как быть в случае, если из базы кто-то не вышел.»
в начале скрипта послать сообщение net send’ом (если служба сообщений не отключена), предупредить юзверей. после паузы тем же net’ом (только уже не send, а другое, не помню как звать) обрубить все сетевые соединения (если это не критично), и браться за дело.
(3) выложил файлы. так же в архиве заготовки для архивации SQL баз, которая заглохла.
а дописать все некогда 🙁
а что именно интересно? о чем надо продолжение?
как это работает или надо новый функционал?
Спасибо
пожалуйста (+0.1)