Периодическое сохранение определённой папки в архив и удаление неактуальных архивов под Windows

Недавно на работе полетел клиент-банк. И выяснилось, что последний бекап важных данных имеет дату от сентября 2013 г. Девица, которая работала на этом компьютере, на вопрос «Почему нет архивов», мило хлопала глазками;)
В общем, в большинстве случаев известно, что со среднестатистического бухгалтера что-то, кроме анализа, требовать бесполезно.
Поэтому сразу придумалось бекапить БД ежедневно, при старте компьютера, и как можно проще.
Причем нужно ещё удалять старые архивы, скажем старше 30 дней, чтобы не забить диск. А также не запускать бекап при рестарте компьютера в тот же день.
Проще чем бат-файл — ничего не придумать, вот и написал.
В процессе написания выяснилось:
1. В Гугле готового решения нет.
2. Бат файлы имеют разные команды для разных версий Windows. Создать паузу под XP оказалось особым геморроем.
3. Для правильного отображения русского языка в бат-файле должна быть установлена кодировка OEM 866. Что конечно же не умеет стандартный блокнот Windows. Пользуйтесь более продвинутыми редакторами, например Notepad++

Кратко — как пользоваться backup_folder.bat
  • Создайте папку для будущих архивов.
  • Поместите туда файл backup_folder.bat Файл возьмите из этого репозитория соответственно Вашей версии системы Windows и Вашего языка.
  • Настройте параметры внутри backup_folder.bat Для этого отредактировать строчки:
Код:
rem Откуда копируем
set from=D:\HOMEBANK\base
rem Файл для логов копирования
set log=result_%DATE%.txt
rem Сколько архивов оставлять
set old=30
  • Проверьте, как это работает — запустив файл. В этой же папке должны создаться папка бекапа и файл логов. Повторный запуск файла не должен создать архив, а просто вывести предупреждение. Подправьте параметры, если это необходимо.
  • Настройте периодический запуск файла. Для этого можно поместить ссылку на файл в автозагрузку при старте компьютера.
Вообще в самом файле всё прокомментировано, так что для минимально имеющего понимание разобраться — не проблема.

Ссылки.



Лицензия: GPL 2.0
Пробовал так копировать. Все хорошо копируется.
Но есть не большая проблема.
Есть специфическая программа для работы с файлами проектов контроллера.
Когда она открыта и использует файл проекта она не дает копировать файлы которые в ней открыты.
И копии создаются не полноценные. И об этом узнал только когда решил откатиться. Но не получилось не хватало файлов.
После этого стал копировать файлы только убедившись что у всех пользователей закрыта эта программа.
Но это тоже не является гарантией что в момент копирования файлов никто не начнет эти файлы использовать.
 
Пробовал так копировать. Все хорошо копируется.
Но есть не большая проблема.
Есть специфическая программа для работы с файлами проектов контроллера.
Когда она открыта и использует файл проекта она не дает копировать файлы которые в ней открыты.
И копии создаются не полноценные. И об этом узнал только когда решил откатиться. Но не получилось не хватало файлов.
После этого стал копировать файлы только убедившись что у всех пользователей закрыта эта программа.
Но это тоже не является гарантией что в момент копирования файлов никто не начнет эти файлы использовать.
Для того что бы удалить из памяти перед копированием программы "захватывающие" файлы можно использовать консольную утилиту taskkill, комманда taskkil /? подскажет синтаксис. А если эти файлы открыты кем-то по сети, то можно перед бекапом закрывать сетевой доступ к определённой папке с обрубанием "хвостов", а после открывать такой же доступ, через команду net share /?
 
Для того что бы удалить из памяти перед копированием программы "захватывающие" файлы можно использовать консольную утилиту taskkill, комманда taskkil /? подскажет синтаксис. А если эти файлы открыты кем-то по сети, то можно перед бекапом закрывать сетевой доступ к определённой папке с обрубанием "хвостов", а после открывать такой же доступ, через команду net share /?
Я бы был с этим поосторожнее, во избежание потери данных. Мы с Вами стараемся сохранить данные, а не потерять их;)

Пробовал так копировать. Все хорошо копируется.
Но есть не большая проблема.
Есть специфическая программа для работы с файлами проектов контроллера.
Когда она открыта и использует файл проекта она не дает копировать файлы которые в ней открыты.
И копии создаются не полноценные. И об этом узнал только когда решил откатиться. Но не получилось не хватало файлов.
После этого стал копировать файлы только убедившись что у всех пользователей закрыта эта программа.
Но это тоже не является гарантией что в момент копирования файлов никто не начнет эти файлы использовать.
Я в таком случае ставлю отложенный запуск на Планировщике заданий.
Например, сейчас у меня 3 задания —
1. Бекап 1С Предприятие в 21.15
2. Бекап 1С Сотрудники в 22.15
3. Бекап папки Табеля рабочего времени для подразделений в 23.15
Задачи разнесены по времени, чтобы гарантированно не пересечься и выполняться по очереди и в то время, когда в сети никого нет.
 
Последнее редактирование модератором:
Для подобных целей всегда пользовался планировщиками по типу nnCron, любая периодичность и чистки легко настраиваются + подключается архиватор, например, winrar из командной строки. При желании подключить те же дополнительные батники.
Например, # START-APP: C:\Program Files\WinRAR\WinRAR.exe a -ac -agYYYY-MM-DD -ep2 -m5 -r -rr -y -v1024M "F:\Архивы\бухгалтерия_.rar" "E:\Бухгалтерия\1С\*.*"

Также можно настроить планировщик в Acronis True Image, качественный бэкап дисков\файлов\каталогов гарантирован. Удаление старых копий организовать, например, при названии имён файлов по дням недели и т.д.
 
Назад
Сверху