Перейти к основному содержанию

BAT скрипт для резервного копирования папки

code

Набросал один маленький BAT скрипт для резервного копирование папки. Внесите свои данные и через scheduler настройте расписание резервного копирования.

Ссылки

7-Zip - бесплатный архиватор

BAT скрипт для резервного копирования папки в Облако Mail.Ru

Функции

  • С помощью robocopy делает резервные копии папки.
  • Каждый бэкап сохраняется в отдельную подпапку вида DD.MM.YYYY_hhmmmss.
  • С помощью 7-Zip архивирует резервные копии.
  • Удаляет старые резервные копии.

Код

@echo off
SetLocal EnableDelayedExpansion

rem =============================
rem ====== admin variables ======
rem =============================

set DirName=my_folder
set SourceDir=C:\%DirName%
set BackupDir=B:\%DirName%\daily\
set NumFolders=10

rem =============================
rem ======== 7-Zip path =========
rem =============================

set a7z=%ProgramFiles%\7-Zip\7z.exe

rem =============================
rem == create backup directory == 
rem ==== DD.MM.YYYY_hhmmmss =====
rem =============================

set h=%time:~0,2%
set h=%h: =0%
set FullBackupDir=%BackupDir%%date%_%h%%time:~3,2%%time:~6,2%\
md %FullBackupDir%

rem =============================
rem ====== copy directory =======
rem =============================

robocopy %SourceDir% %FullBackupDir%%DirName%\ /E /ZB /J /NFL /NDL /NJH /NJS /NC /NS /NP 2>nul >nul

rem =============================
rem ====== zip directory ========
rem =============================

"%a7z%" a -tzip -bb0 -bd -sdel "%FullBackupDir%%DirName%.zip" "%FullBackupDir%" 2>nul >nul

rem =============================
rem ==== remove old folders =====
rem =============================

for /f "tokens=* delims=" %%D in ('dir %BackupDir% /ad /b /o-d') do (
	if not %%D=="" (
		if not !NumFolders!==0 (
			set /a NumFolders-=1
		) else (
			rd /s /q %BackupDir%%%D 2>nul >nul
		)
	)
)
  • DirName - название папки
  • SourceDir - что бэкапим
  • BackupDir - куда бэкапим
  • NumFolders - сколько подпапок с бэкапами хранить
  • a7z - путь к 7z.exe

Пример настройки расписания

В Task Scheduler настраиваем новое задание.

bat

Выбираем пользователя, от имени которого будет выполняться резервное копирование. После сохранения задания нас спросят пароль от него. Ставим галку Run whether user is logged or not - запускать даже если юзер не залогинен.

bat

В триггерах настраиваем расписание. У меня резервное копирование происходит раз в сутки.

bat

Указываем ссылку на наш BAT файл.

bat

Настраиваем условия.

bat

Проверяем настройки. OK.

Теперь папка будет резервироваться раз в день. С настройкой NumFolders=10 в BAT файле мы будем хранить данные за последние 10 дней.

Если хотите хранить ежедневные и ежемесячные резервные копии - сделайте два BAT файла и два расписания резервного копирования в разные папки.

Папки с русским названием

От подписчиков:

Для бэкапа папок с русскими названиями нужно открыть Notepad++ и сохранить батник в кодировке ОЕМ 866.

Папки с пробелами

Как копировать папки с пробелами в названии? Пример:

robocopy "C:\Source Path" "C:\Destination Path" /option1 /option2...

Но:

robocopy "C:\Source Path" "C:\Destination Path\ " /option1 /option2...

или лучше используйте:

robocopy "C:\Source Path" "C:\Destination Path\\" /option1 /option2...

Проблема связана с экранированием.

https://ss64.com/nt/syntax-esc.html

Проблема с датой в английской локали

Замените

set FullBackupDir=%BackupDir%%date%_%h%%time:~3,2%%time:~6,2%\

на

set FullBackupDir=%BackupDir%%date:/=%_%h%%time:~3,2%%time:~6,2%\

или

set FullBackupDir=%BackupDir%%date:\=%_%h%%time:~3,2%%time:~6,2%\

или

set FullBackupDir=%BackupDir%%date:~4,2%.%date:~7,2%.%date:~-4%_%h%%time:~3,2%%time:~6,2%\

Или локаль в винде на русскую переведите.

Теги

 

Похожие материалы

Делаем загрузочную флешку с Windows 7

Понадобилось мне как-то сделать загрузочную USB флешку с дистрибутивом Windows 7. ISO образ у меня был, а Интернета не было. Пришлось делать загрузочную флешку подручными средствами Windows без использования дополнительных программ.

Теги