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

From SysadminWiki.ru
Jump to: navigation, search

Резервное копирование всего системного раздела

Ahead Nero Burning ROM

Если мы, как и положено, создали отдельный раздел для ОС, а данные размещаем на других разделах, то первый должен поместиться на одну DVD матрицу, но можно и на несколько. Меню: Recorder - Burn Hard Drive Backup. Если установлена русская версия Nero, то выбираем язык для загрузки "английский", т.к. русский некорректно отображается. Затем с этого DVD загружаемся и восстанавливаем раздел.


Acronis True Image

Создаём образ диска (Create Image) и кладём его либо на другой раздел, либо записываем на DVD. Создаём загрузочный диск (Create Bootable Rescue Media). Его можно записать либо на CD, либо на 7 дискет. Загружаясь с него получаем графическую оболочку с чуть меньшим набором функций. Выбираем где лежит наш образ и восстанавливаем раздел. Созданный образ можно также подключить, присвоив ему букву и восстановить отдельные файлы.

Резервное копирование папок с данными

Средства Windows

С помощью встроенного в Windows мастера резервного копирования создаём задание для копирования нужных папок:

Пуск - Программы - Стандартные - Служебные - Архивация данных

Сторонние средства

Бесплатное ПО:


Архиватор + свой скрипт

Для резервного копирования используются следующие бесплатные программные продукты:

  • 7-Zip - архиватор
  • pDate - консольная программа для получения даты и времени в нужном формате

Резервное копирование происходит ежедневно с помощью скрипта bk_7z.bat, который считывает из файла include.txt список папок и файлов (перечисленных по одному на строке) и создаёт архив. Скрипт может работать в одном из двух режимов. Он задаётся переменной WholeMode:

  • WholeMode=0 - первого числа каждого месяца архивирует папки полностью, создавая базовый архив, а в остальные дни создаёт инкрементный архив.
  • WholeMode=1 - каждый раз создаёт полный архив.

В обоих режимах воскресный архив будет еженедельным и не будет перезаписываться. Можно после создания архива сразу скопировать его в безопасное место (если NeedSpread=1).

Все переменные в скрипте можно переопределить по усмотрению. Перед применением нужно удалить все комментарии помеченные '#' решёткой

rem @echo off
rem This script will backup data from %IncludeList% to %baseArch% 
rem It will make incremental archives if %WholeMode%=0
rem It will copy archives to different places if %NeedSpread%=1
rem
rem %IncludeList% is a file with list of files or/and directories 
rem one in a line.
rem 
rem Requirements:
rem 7-Zip 4.57 or > (http://www.7-zip.org/)
rem pDate 1.1 or > (http://pdate.sourceforge.net/)
rem 
rem Pavel Malakhov 2007.12.12
rem                ...        ряд изменений
rem		   2010.01.13 Добавлен экспорт из реестра прав на шары

rem -======[ VARIABLES ]======-

	rem Временный каталог, используется для кэша
set tmpDir=D:\Temp		

	rem Используем переменные для внешних программ	
set run_7z="C:\Program Files (x86)\7-Zip\7z.exe"
set run_pdate=C:\Tools\pdate.exe

	rem --- set and get "day of month" variable %dm% ---
%run_pdate% "\s\e\t \d\m\=e" > %tmpDir%\tmp.bat
call %tmpDir%\tmp.bat
del %tmpDir%\tmp.bat

	rem --- set and get "day of week" variable %dw% ---
%run_pdate% "\s\e\t \d\w\=u" > %tmpDir%\tmp.bat
call %tmpDir%\tmp.bat
del %tmpDir%\tmp.bat

	rem --- set and get "week number" variable %wn% ---
%run_pdate% "\s\e\t \w\n\=V" > %tmpDir%\tmp.bat
call %tmpDir%\tmp.bat
del %tmpDir%\tmp.bat

	rem Журнал
set LogDir=C:\Tools						
set Log=%LogDir%/bk_7z_general.log 

	rem Места и названия архивов
set dDir=D:\Backup				# Место хранения архивов
set dlmDir=D:\Backup\LastMonth			# Архивы за прошлый месяц
set baseArch=%dDir%\month_general.7z		# Имя основного архива
set IncludeList=include_general.txt		# Список архивируемых объектов
set updArch_dw=%dDir%\day_general_%dw%.7z	# Имя для ежедневного инкрементного архива
set updArch_wn=%dDir%\week_general_%wn%.7z	# Имя для еженедельного инкрементного архива
set regShares=%dDir%\shares_%wn%.reg		# архив реестра

    rem --- (=1) Make whole backup every day ---
    rem --- (=0) Make whole backup only once a month. Make update archives (incremental to month) everyday ---
set WholeMode=0

    rem --- Sread archived files on several places (=1) or not (=0 or whatever) ---
set NeedSpread=1

    rem --- Where to spread archives. Destination directories ---
set dDirM=D:\Backup\  # 1-го числа
set dDir1=D:\Backup\  # в понедельник
set dDir2=D:\Backup\  # во вторник и т.д.
set dDir3=D:\Backup\
set dDir4=D:\Backup\
set dDir5=D:\Backup\
set dDir6=D:\Backup\
set dDir7=D:\Backup\  #... в воскресенье = еженедельный архив

rem -======[ COMMANDS ]======-
if not exist %baseArch% goto BaseArchive
if %WholeMode%==1 goto BaseArchive
if %dm% GTR 1 goto UpdateArchive

:BaseArchive
rem --- Clear %dlmDir% and move data of previous month to that dir ---
if not exist %dlmDir%\nul mkdir %dlmDir%
del /Q %dlmDir%\*
move /Y %dDir%\* %dlmDir%
move /Y %LogDir%\*.log %dlmDir%

%run_pdate% "====== Y B =======" > %Log%
%run-pdate% "z, A --- \B\a\c\k\u\p \s\h\a\r\e \r\i\g\h\t\s " >> %Log%
reg export HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares %regShares%
%run_pdate% "z, A --- \S\t\a\r\t \t\o \c\r\e\a\t\e \n\e\w \a\r\c\h\i\v\e" >> %Log%

rem --- Create archive ---
%run_7z% a %baseArch% -w%tmpDir% -i@%IncludeList% -ssw -slp -scsWIN -mmt=on -mx3 -ms=off >> %Log%
%run_pdate% "z, A -^- \n\e\w \a\r\c\h\i\v\e \c\r\e\a\t\e\d" >> %Log%
set SpreadArch=%baseArch%
if %NeedSpread%==1 goto Spread+
goto End

:UpdateArchive
echo ******* ******* *******  >> %Log%
%run_pdate% "z, A --- \S\t\a\r\t \t\o \u\p\d\a\t\e \a\r\c\h\i\v\e" >> %Log%
if %dw%==7 (set updArch=%updArch_wn%) else set updArch=%updArch_dw%

rem --- Check files existence ---
if exist %updArch% del /Q %updArch% 

rem --- Create incremental archive ---
%run_7z% u %baseArch% -u- -up0q0r2x0y2z0w0!%updArch% -w%tmpDir% -i@%IncludeList% -ssw -slp -scsWIN -mmt=on -mx5 -ms=off >> %Log%
%run_pdate% "z, A -^- \u\p\d\a\t\e \f\i\n\n\i\s\h\e\d" >> %Log%
set SpreadArch=%updArch%

if %NeedSpread%==1 goto Spread
goto End

:Spread
rem --- Spread created archive to backup places ---
if %dm%==1 set SpreadDir=%dDirM%
if %dw%==1 set SpreadDir=%dDir1%
if %dw%==2 set SpreadDir=%dDir2%
if %dw%==3 set SpreadDir=%dDir3%
if %dw%==4 set SpreadDir=%dDir4%
if %dw%==5 set SpreadDir=%dDir5%
if %dw%==6 set SpreadDir=%dDir6%
if %dw%==7 set SpreadDir=%dDir7%

%run_pdate% "z, A ---  \S\p\r\e\a\d \s\t\a\r\t\e\d" >> %Log%
rem -does not work on Win2003- if not exist %SpreadDir%\nul mkdir %SpreadDir%
mkdir %SpreadDir%
echo spread to: %SpreadDir%, file to copy:%SpreadArch% >> %Log%
copy /Y %SpreadArch% %SpreadDir%  >> %Log%
%run_pdate% "z, A -^- \C\o\p\y \l\o\g \s\t\a\r\t\e\d" >> %Log%
copy /Y %Log% %SpreadDir%  >> %Log%

:End
%run_pdate% "z, A -^- \D\o\n\e" >> %Log%

rem -=======[ COMMENTS ]=======-
rem Some keys for 7z command:
rem -ssw (Compress files open for writing)
rem -slp (Set Large Pages mode) increases the speed of compression of large data
rem -scs (Set charset for list files) {UTF-8 | WIN | DOS}
rem -ms=100f100m (set solid mode with 100 files & 10 MB limits per one solid block.)
rem -mmt=on  (Sets multithread mode. If you have a multiprocessor or multicore system, you can get a increase with this switch.)
rem -mx=5  (x=[0 | 1 | 5 | 7 | 9 ] Sets level of compression)
rem
rem 7z a archive.7z c:\*path\to\file.ext 
rem stores full path except volume letter, but it is slow to start because it has to scan the hard disk for matches

Папки могуть быть и удалённые, тогда указываем соответствующий путь, например \\server\folder\

Процесс каждого архивирования отражается в журнальном файле bk_7z.log, обновляющимся ежемесячно.

Первого числа следующего месяца все архивы (основной и инкрементные) и журнал переносятся в папку C:\Backup\LastMonth