Backup — не нравится готовое — сделай сам!

Без бекапа по жизни — несколько не мой принцип отношения к данным. Но существующие программы, которые я видел, меня не устроили.
Поэтому приложив несколько интелекта я разработал пакет скриптов для создания инкрементальных бекапов.

Статья не окончена. Допишу полностью, если будут те, кому это интересно. или удалю, если никому не надо.

 

 

Требования следующие:

  • бекап должен быть инкрементальным и время от времени полным
  • формат должен быть открытым
  • программа должна быть бесплатной
  • возможность указания нескольких получателей (с учетом того, что не все могут быть доступны)
  • работать должно быстро
  • должно учитываться удаление файлов
  • должно храниться несколько копий, а устаревшие удалялись автоматически.
  • должна быть возможность назначать пароль для каталога
  • возможность выбора степени сжатия для каталога
  • возможность исключения файлов по каталогу / маске

 

Самая главная проблема — инкрементальный бекап. Многие программы могут делать время от времени полный, а между ними — инкрементальный. Но я не нашел программы, которая бы в случае если файлы не изменялись, не делала бы полный бекап.

Хотелось иметь возможность указания гранулярности анализа данных для формирования полных бекапов. Т.е. у меня несколько десятков каталогов для данных клиентов. И если данные изменились только в одном каталоге, то новый полный бекап нужно делать только для одного каталога. Но в тоже время, я не хочу в настройках указывать каждый каталог — состав постоянно меняется.

Для выполнения этих условий был рожден набор скриптов.

А именно три штуки:

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 %*

 

9 Comments

  1. konfed

    Тема, хоть и старая, но, наверное останеться актуальной до тех пор, пока будут существовать файлы на дисках, а появление решений такой задачи говорит о том, что идеального варианта не существует (наверное пока не существует — кто знает таковой — отзовитесь).

    Статья интересная — автор, если сможешь — продолжай, особенно интересно решение 4 пункта функциональных возможностей (и есть ли у автора среди получателей DVD диск?), ну и среди пунктов возможностей может включить специфический для 1С — как быть в случае, если из базы кто-то не вышел.

    Reply
  2. ValeriVP

    ок. постараюсь сегодня дописать.

    архивация на DVD не предусматривалась и не делалась.

    У меня задача была — архивировать на внешний HDD когда нужный HDD подключался и на сервер время от времени.

    специфичных задач архивации (1С, SQL) я тоже не делал — руки не дошли.

    Reply
  3. Mogidin

    жду продолжения, или хотя бы файликов, на которые можно посмотреть…

    Reply
  4. Mogidin

    (1) «как быть в случае, если из базы кто-то не вышел.»

    в начале скрипта послать сообщение net send’ом (если служба сообщений не отключена), предупредить юзверей. после паузы тем же net’ом (только уже не send, а другое, не помню как звать) обрубить все сетевые соединения (если это не критично), и браться за дело.

    Reply
  5. ValeriVP

    (3) выложил файлы. так же в архиве заготовки для архивации SQL баз, которая заглохла.

    Reply
  6. ValeriVP

    а дописать все некогда 🙁

    Reply
  7. ValeriVP

    а что именно интересно? о чем надо продолжение?

    как это работает или надо новый функционал?

    Reply
  8. kr_andr

    Спасибо

    Reply
  9. ValeriVP

    пожалуйста (+0.1)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *