Статья не окончена. Допишу полностью, если будут те, кому это интересно. или удалю, если никому не надо.
Требования следующие:
- бекап должен быть инкрементальным и время от времени полным
- формат должен быть открытым
- программа должна быть бесплатной
- возможность указания нескольких получателей (с учетом того, что не все могут быть доступны)
- работать должно быстро
- должно учитываться удаление файлов
- должно храниться несколько копий, а устаревшие удалялись автоматически.
- должна быть возможность назначать пароль для каталога
- возможность выбора степени сжатия для каталога
- возможность исключения файлов по каталогу / маске
Самая главная проблема - инкрементальный бекап. Многие программы могут делать время от времени полный, а между ними - инкрементальный. Но я не нашел программы, которая бы в случае если файлы не изменялись, не делала бы полный бекап.
Хотелось иметь возможность указания гранулярности анализа данных для формирования полных бекапов. Т.е. у меня несколько десятков каталогов для данных клиентов. И если данные изменились только в одном каталоге, то новый полный бекап нужно делать только для одного каталога. Но в тоже время, я не хочу в настройках указывать каждый каталог - состав постоянно меняется.
Для выполнения этих условий был рожден набор скриптов.
А именно три штуки:
MakeBackup.cmd - стартовый файл, который читает настройки из файла конфигурации.
Запускается без параметров, читает настройки из файла MakeBackup.cfg. Структура файла настроек следующая:
[SRC]
#В этом разделе указыватся источник файлов
#Первый параметр - каталог для архивирования
"C:\Program Files\Total Commander"
#Так же можно указать, какие файлы не требуется архивировать (/x) (указывается не маска файлов, а подстрока входящая в путь файла)
"C:\Program Files\Mdesktop" /x"logs\;.tmp"
#Для вложенного каталога хотим отдельный архив
"C:\Program Files\1cv82" /x"srvinfo\"
"C:\Program Files\1cv82\srvinfo
#Можно указать пароль (/p)
"C:\Program Files\Opera" /pSuperPasword
#Можно указать, что для каждого вложенного каталога будет сделан отдельный архив (/s)
D:\Books /s
#Можно указать степень сжатия (/m0...9, по умолчанию - 5)
D:\Photo /m0
[DST]
#Список каталогов - приемников
H:\Backup\
S:\Rebelx\Backup\
[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 %*