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

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

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

Теги

 

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

BAT скрипт для передергивания сети на сервере Windows Server 2012 R2

Однажды наши виртуальные Windows сервера стали терять сеть. Проблему удалось выявить с сетевыми адаптерами VMware E1000. Примечательно, что в Ubuntu эти сетевухи работают без нареканий, а вот в Windows Server 2012 R2 - сеть иногда зависала.

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

Я решил немного усилить безопасность и добавить автоматическое еженедельное резервное копирование папки в Облако Mail.Ru.

Теги

Тюнинг Windows Terminal

Windows Terminal — новое терминальное приложение в Windows для разработчиков и системных администраторов. Инструмент позволяет в одном окне в режиме вкладок запускать различные оболочки командной строки, PowerShell и WSL. В одной вкладке может отображаться несколько панелей.

Теги