Backup подручными средствами

Часть третья

(Окончание. Начало в №11)

Сегодня мы с вами завершим совершенствование нашей рабоче-домашней системы резервного копирования важных файлов. Она ведь уже почти совсем готова - осталось разобраться только с несколькими небольшими вопросами.


Немного размышлений

Но вначале немного размышлений. На форуме нашей газеты один человек под ником udly (админ) написал, что копирование - дело системных администраторов, а не пользователей. В целом, утверждение правильное - действительно, системный администратор и деньги за такие вещи получает, и уж наверняка лучше пользователя знает, как правильно организовать резервное копирование. И хороший системный администратор не будет пользоваться такими кустарными методами, какие я расписывал в первой и второй частях.

Это всё красиво звучит в теории, но зачастую довольно трудно реализуемо на практике. В мелких фирмах нет смысла нанимать отдельно системного администратора, который будет следить за порядком в не таком уж и большом компьютерном хозяйстве. То же касается и дома - ведь там тоже надо копировать важную информацию, не так ли? Уж домой-то приглашать специально нанятого системного администратора точно никто не станет.

Так что повторю то, что уже говорил в самом начале этой мини-серии по резервному копированию: эти методы замечательно применимы дома и пользователем на собственном рабочем компьютере. Даже если в конторе предусмотрено резервное копирование, всё может произойти, и существование лишней копии важной информации не помешает в ограниченном числе довольно нетривиальных случаев, верно?


Многоархивный вариант

Чтобы резервная копия не занимала слишком много места и можно было защитить её паролем от посторонних глаз, мы использовали архивирование. Но при этом, если архив повреждался, была высока вероятность потери всей информации, которая содержалась в нём. Конечно, использование записи для восстановления повреждённого архива помогает решить эту проблему, но здесь можно пойти ещё дальше, а именно - упаковывать каждый файл, который должен войти в резервную копию, в свой собственный архив. Конечно, таким образом мы несколько увеличим объём резервной копии, зато увеличим и шансы на то, что если один файл повредится, то остальные всё равно останутся.

В принципе, вы бы и сами могли написать скрипт для сохранения каждого файла в собственном архиве, немного переделав те скрипты, которые предлагались в первой и второй статьях серии, но, думаю, будет лучше привести текст этого скрипта, поскольку в нём встречается одна конструкция, которую мы с вами раньше не использовали.

cd c:\backup
mkdir %DATE%
cd c:\Work
for %%A in (*.*) do "d:\Program Files\WinRar\rar.exe"
a -rr5%% -s -t c:\Backup\%DATE%\%%A.rar %%A

Первые три строчки, я так полагаю, вполне понятны всем, кто читал предыдущие части. А вот последняя вызывает недоумение. Но на самом деле всё просто - эта команда указывает считывать последовательно имя каждого файла, хранимого в переменной %%A из списка имён файлов в данной директории, соответствующих маске *.* (а ей, как мы помним, соответствуют все файлы) и выполнять после каждого считывания команду, стояющую после слова do. А там у нас стоит обыкновенная архивация с помощью Rar'а, которой мы с вами уже вполне успешно занимались во второй части. Хочу обратить ваше внимание, что символы %% применяются не просто так - в команде for, если она используется из BAT-файла, переменные необходимо записывать именно таким образом, иначе могут возникнуть ошибки.


Протоколирование

На случай возникновения ошибок полезно вести протоколирование - чтобы просто потом можно было разобраться, что именно не так пошло в процессе резервного копирования информации. Rar позволяет осуществить это без особых затруднений: достаточно воспользоваться ключом -ilog[имя], например, -ilogc:\Backup\backuplog.txt.


Удаление старой резервной копии

Резервные копии имеют обыкновение накапливаться и устаревать, поэтому имеет смысл автоматически удалять совсем уж старые копии одновременно с созданием новых. Честно говоря, метод, который я здесь хочу предложить, придуман не мной, а взят у товарища Solander'а с форума windowsfaq.ru. Дело в том, что он, в отличие от меня, не поленился сделать скрипт для удаления копии недельной, а не месячной давности - и скрипт этот, как видите, получился немаленьким:

cd c:\backup
mkdir %DATE%
cd c:\Helps
"g:\Program Files\WinRar\rar.exe" 
  a -rr5%% -s c:\Backup\%DATE%\backup.rar c:\helps\*.*
if not exist c:\backup\%DATE%\backup.rar goto error
goto welldone
:error
echo Не удалось создать резервную копию > c:\Backup\error!.txt
exit
:welldone
set T_Date=%DATE%
IF %T_DATE:~0,1%==0 (
SET /A T_DAY=%T_DATE:~1,1%) else (
SET /A T_DAY=%T_DATE:~0,2%)
IF %T_DATE:~3,1%==0 (
SET /A T_MONTH=%T_DATE:~4,1%) else (
SET /A T_MONTH=%T_DATE:~3,2%)
SET /A T_YEAR=%T_DATE:~6,4%
SET /A T_DAY=%T_DAY%-7
IF %T_DAY% LEQ 0 SET /A T_MONTH=%T_MONTH%-1
IF %T_MONTH%== 0 SET /A T_YEAR=%T_YEAR%-1
IF %T_MONTH%== 0 SET /A T_MONTH=12
if %T_MONTH%==1 Set /A DIM=31
if %T_MONTH%==2 Set /A DIM=28
if %T_MONTH%==3 Set /A DIM=31
if %T_MONTH%==4 Set /A DIM=30
if %T_MONTH%==5 Set /A DIM=31
if %T_MONTH%==6 Set /A DIM=30
if %T_MONTH%==7 Set /A DIM=31
if %T_MONTH%==8 Set /A DIM=31
if %T_MONTH%==9 Set /A DIM=30
if %T_MONTH%==10 Set /A DIM=31
if %T_MONTH%==11 Set /A DIM=30
if %T_MONTH%==12 Set /A DIM=31
IF %T_DAY% LEQ 0 SET /A T_DAY=%T_DAY%+%DIM%
IF %T_DAY% LSS 10 SET T_DAY=0%T_DAY%
IF %T_MONTH% LSS 10 SET T_MONTH=0%T_MONTH%
rmdir c:\Backup\%T_DAY%.%T_MONTH%.%T_YEAR% /s /q
del c:\Backup\error!.txt

Кратко поясню, чем занимается этот скрипт. Мы архивируем файлы и проверяем, существует ли архив. Если его не существует, то мы записываем в файл error!.txt сообщение об ошибке и прекращаем работу. Если же всё в порядке, то мы вычисляем дату, которая была за неделю до сегодняшнего числа, и удаляем папку с копией за тот день, попутно удаляя и файл с сообщением об ошибке. Самая большая часть скрипта занимается вычислением даты с учётом числа дней в каждом месяце, и подробно я на ней останавливаться не буду.

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

Версия для печатиВерсия для печати

Номер: 

13 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя darkomen
Бред... Я понимаю еще если ТАКИМ способом будет заниматься очумевший программер.

Ведь есть довольно качестваенные проги для этого

Аватар пользователя Вадим Станкевич
А если зверь-админ такие проги не ставит и другим ставить не даёт?
Аватар пользователя Al
Если админ этого не делает - гнать его надо - он не зверь, он - раздолбай. А что другим не дает - это правильно - каждому - свое.
Аватар пользователя AK
Как дети. Нормальная прога денег стоит. Или вы предлагаете красть?

Более того, никто не мешает самому скомпилить из преведенного скрипта исполняемый файл, немного модифицировав немного для ввода.

Более того - это только раздолбай одмин не оперирует батниками, или, о боже, ВХС или ВМИ - вы хоть то знаете такие слова? Оличная, статья - можно найти некоторые решения и идеи.