====== Резервное копирование в 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=0&#entry3857933|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]]