Користувальницькькі налаштування

Налаштування сайту


coding:scripts:backup_windows

Резервное копирование в Windows.

Для многих не секрет, что такое резервное копирование, для чего оно нужно и как ним нужно пользоваться. Сам уже не раз сталкивался, как выручает один раз настроенное автоматически работающее резервное копирование важных баз, документов… Хотя каюсь - если на работе уже больше пяти лет активно пытаюсь везде по возможности внедрить и привить максимально, дома не пользуюсь - места жалко LOL

По частям данный опус несколько раз частями был мною опубликован на нескольких форумах. Пришло время собирать камни :-)

В .bat файлах заочно предполагаю что программа архивации WinRAR находится в её стандартном каталоге по умолчанию и к началу уже давно установлена. Кому WinRAR чем-то не нравится, её можно легко (а кому относительно … ) заменить на любой другой консольный архиватор. Это не принципиально. Но я использую именно WinRAR.

Рабочее место.

Мой “типичный” backup.bat, использую на всех “рабочих станциях”. Архивируются каталоги: docs, Desktop, mail, shara с диска D. Прописываю в стандартный планировщик на всех компьютерах пользователей (если не обрабатывается на них секретные данные - на таких данные на сервер сливать нельзя :-) ). Для удобства (моего) и на всякий случай почта, документы, содержимое раб. стола перенесено в соотв. каталоги. Пользователям категорически советую на системном диске не хранить какие-либо документы. Причины банальны … если приспичит отформатировать системный раздел, документы уже будут целы, легче делать архивацию для меня, документы хранятся отдельно от ОС, пользователю легче ответить на вопрос где ЕГО ВАЖНЫЕ документы (хотя часто часто он понятия не имеет где они и что ему нужно сохранить :-( ).

backup.bat

d:
cd d:\BACKUP

del D:\backup\*.* /q

echo. | date > d:\backup\backup.log
echo. | time >> d:\backup\backup.log
"C:\Program Files\WinRAR\Rar.exe" a -m5 -r -t -dh -idp d:\backup\desktop.rar "D:\Desktop\*.*" >> d:\backup\backup.log
"C:\Program Files\WinRAR\Rar.exe" a -m5 -r -t -dh -idp d:\backup\docs.rar "D:\Docs\*.*" >> d:\backup\backup.log
"C:\Program Files\WinRAR\Rar.exe" a -m5 -r -t -dh -idp d:\backup\mail.rar "D:\mail\*.*" >> d:\backup\backup.log
"C:\Program Files\WinRAR\Rar.exe" a -m5 -r -t -dh -idp d:\backup\shara.rar "D:\shara\*.*" >> d:\backup\backup.log

rem Дефрагментация дисков C, D
defrag -f c:
defrag -f d:

md \\server\pbf\unknown\
copy d:\backup\*.* \\server\pbf\unknown

shutdown -s -t 300 -f -c "Резервное копирование выполнено. Выключаю компьютер."

Строка "del D:\backup\*.* /q" очищает содержимое каталога с предыдущими архивами документов. Эта строка добавлена для того что-бы избавиться от “эффекта накопителя” - если пользователь временно (на день-два) поместит в каталог, подлежащий архивации пару фильмов и потом удалит их от туда, то в архив фильмы останутся лежать мёртвым грузом …

Строки: "defrag -f c:

defrag -f d: " делают соотв. дефрагментацию дисков С: и D:. По очереди.

"md \\server\pbf\unknown\ copy d:\backup\*.* \\server\pbf\unknown" - делают свой каталог на сервере для каждой рабочей станции - "unknown" я обычно на каждой станции правлю на имя ПК и на сервере получаю “пачку каталогов” по 1-му на ПК.

Cделать через systemstate слепок системы:

Использовать можно (и наверняка нужно) как на серверах, как сам использую, так возможно и на обычных рабочих станциях.

systemstate.bat.

d:

cd d:\BACKUP


C:\WINDOWS\system32\ntbackup.exe backup SystemState /n "SystemState.bkf" /d "Set created 27.11.2008 at 14:32" /v:yes /r:no /rs:no /hc:off /m normal /j "SystemState" /l:f /f "d:\backup\SystemState.bkf"

mkdir "\\bfs\d$\SBF\SystemState\%DATE%\terminal\"
move d:\Backup\SystemState.bkf \\bfs\d$\SBF\SystemState\%DATE%\terminal\

Дефрагментация дисков C, D
defrag -f c:
defrag -f d:

mkdir "\\bfs\d$\SBF\DHCP_backups\%DATE%\"
move d:\BACKUP\*.* \\bfs\d$\SBF\DHCP_backups\%DATE%\

Возможно не все указанные ключи нужны … Пример из автоматически созданного задания.

сначала скрипт создаёт файл “d:\Backup\SystemState.bkf” потом его-же переносит в "\\bfs\d$\SBF\DHCP_backups\%DATE%\", где "%date%" - дата создания

Серверные или файловые базы.

Пример user_all.bat и user_arc.bat в связке создадут по отдельному архиву на отдельный каталог D: на сервере. Удобно сохранять так базы 1С или серверные шары пользователей и т. п…

user_arc.bat

@ECHO OFF

SET PREFIX=%1
SET BAZA=%2

SET FOLDER=%DATE%

cd d:\BACKUP
d:
mkdir "%FOLDER%"
cd "%FOLDER%"

ECHO Begin: %DATE% %TIME% >> %BAZA%.LOG
ECHO ----------------------------------------------------------------------------------------- >> %BAZA%.LOG
"C:\Program Files\WinRar\RAR.EXE" a -m5 -r -t -dh -idp %PREFIX%.RAR d:\%BAZA%\*.* >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO ========================================================================================= >> %BAZA%.LOG
ECHO ========================================================================================= >> %BAZA%.LOG
ECHO End: %DATE% %TIME% >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG
ECHO. >> %BAZA%.LOG

cd d:\BACKUP

user_all.bat

@echo off
d:
cd d:\BACKUP

echo kadri
call c:\user_arc.bat kadri kadri
echo pto
call c:\user_arc.bat pto pto
echo smeta
call c:\user_arc.bat smeta smeta
echo sekretar rem
call c:\user_arc.bat  sekretar sekretar
echo yurist
call c:\user_arc.bat  yurist yurist
echo ekonom
call c:\user_arc.bat  ekonom ekonom
echo buhgalter
call c:\user_arc.bat  buhgalter buhgalter
echo shara
call c:\user_arc.bat  shara shara

echo defragmentings all drives ...
defrag c: /f
defrag d: /f

Из планировщика (использую системный) по времени вызывается “user_all.bat”, который вызывает на каждый каталог в отдельности по разу “user_arc.bat” с параметрами имя архива и каталога для архивации …

Резервное копирование MS SQL сервера:

Одна отдельная БД

rem @echo off
set sqlserver=MSSQL
set user=sa
set pass=911

set wrkdir=%~dp0
set tmpfile="%wrkdir%~temp.tmp"
echo Just a line of text > %tmpfile%
for %%f in (%tmpfile%) do set curtime=%%~tf
for /F "tokens=1-5 delims=.:/\ " %%f in ("%curtime%") do set curtime=%%h-%%g-%%f-%%i-%%j
del /f %tmpfile% > nul:

set bakfile=F:\backup\1c\sql\CpxDemo-%curtime%.bak

set sdbname=CpxDemo

set isql="C:\Program Files\Microsoft SQL Server\80\Tools\Binn\isql.exe" -S %sqlserver% -U %user% -P %pass% -Q

set backsql="BACKUP DATABASE %sdbname% TO DISK = '%bakfile%' WITH NOFORMAT, INIT, NAME = '%sdbname% backup', NOREWIND, NOUNLOAD, SKIP"

rem echo Backing Up Database %sdbname% on %sqlserver%...
%isql% %backsql%
rem echo.
rem pause
exit

Несколько БД по очереди

Идея - запускать шаблон, аналогично примеру с файловыми каталогами

Запускной - Backup_Firebird.cmd

call C:\backup\sql\firebird\Backup_Shablon.cmd openfire
call C:\backup\sql\firebird\Backup_Shablon.cmd Shablon
call C:\backup\sql\firebird\Backup_Shablon.cmd Scheduler

Запускаемый - Backup_Shablon.cmd

rem @echo off

set sqlserver=firebird

set user=firebird

set pass=firebird



set wrkdir=%~dp0

set tmpfile="%wrkdir%~temp3.tmp"

echo Just a line of text > %tmpfile%

for %%f in (%tmpfile%) do set curtime=%%~tf

for /F "tokens=1-5 delims=.:/\ " %%f in ("%curtime%") do set curtime=%%h-%%g-%%f-%%i-%%j

del /f %tmpfile% > nul:



set sdbname=%1



set bakfile=D:\Backup_1C_BD\TD_Vassma_%sdbname%-%curtime%.bak



set isql="C:\Program Files\Microsoft SQL Server\80\Tools\Binn\isql.exe" -S %sqlserver% -U %user% -P %pass% -Q



set backsql="BACKUP DATABASE %sdbname% TO DISK = '%bakfile%' WITH NOFORMAT, INIT, NAME = '%sdbname% backup', NOREWIND, NOUNLOAD, SKIP"



rem echo Backing Up Database %sdbname% on %sqlserver%...

%isql% %backsql%

rem echo.

Бэкап для медка, на powershell.

source

# Останавливаем сервис медка.
stop-service -name zvitgrp

# Создаем алиас "sz" для 7zip
set-alias sz "C:\Program Files (x86)\7-Zip\7z.exe"

# Создаем переменную "$date" с текущей датой и $backup с путем для архивов
$date = (get-date -uformat %d.%m.%y)
$backup = "R:\SERVERS\medok"
$CurrentDate = Get-Date

# Архивируем каталог медка в фаил с текущей датой
sz a $backup\$date.7z "C:\Documents and Settings\All Users\Application Data\Medoc\Medoc\"

# Запускаем сервис медка.
start-service -name zvitgrp

# Удаляем файлы старше 7 дней
Get-ChildItem $backup | Where-Object { $_.LastWriteTime -lt $CurrentDate.AddDays(-7) } | Remove-Item 

Архивация однотипных файлов в 1 каталоге:

rem @echo off
set rar="C:\Program Files\WinRAR\rar.exe"
rem set dst=\\firebird.фирма.net\backup$\1c\sql\
rem cd ..\
net use x: \\vkis002\backup$
x:
for /R %%i in (*.bkf) do %rar% a -ep -df -m4 -md2048 -ri7 "-rr3%%" "%%~dpni".rar "%%~dpnxi"
c:
net use x: /delete

Резервное копирование разделов FreeBSD:

Консольные утилиты

coding/scripts/backup_windows.txt · В останнє змінено: 2014/10/20 15:51 (зовнішнє редагування)