====== Резервное копирование в 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. ======
[[http://forum.0day.kiev.ua/index.php?showtopic=341773&st=0entry3857933|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: ======
Резервное копирование разделов FreeBSD с помощью dump:
http://silvercat.org.ua/docuwiki/doku.php?id=freebsd#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_dump_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
====== Консольные утилиты ======
[[http://www.nncron.ru/download_ru.shtml|nnsoft]]