Если Вы администрируете сервер, то перед Вами (как и когда-то передо мной) наверняка возникла задача резервного копирования файлов для их последующего восстановления. Если Вы продвинутый администратор, у Вас наверняка в запасе есть уже отлаженный способ, как сделать backup-ы файлов, данных диска с возможностью их быстрого восстановления. Если же Вы недавно работаете в этой стезе, то, возможно эта статья может Вам пригодиться или хотя бы натолкнет на мысль.
Я по жизни больше разработчик, чем администратор, но на основном месте работы мне, помимо разработки (которая не является основной деятельностью, но если я умею, то почему-бы не облегчить работу автоматизацией части рутинных задач) в нагрузку был положен сервер, на котором крутится наш сайт и FTP.
Поскольку данные в основном файлового типа (и даже база данных сайта представляет собой файлы MySQL), то решено было не заморачиваться со сложным резервным копированием, а сделать все это посредством какого-либо архиватора с копированием готового архива на внешний накопитель (диск).
Да, забыл сказать, что на сервере "крутится" система Windows Server 2003.
Итак, WinRAR отпал сразу - платный он, WinZip - вообще фуфло, а не архиватор (это субъективное мнение). Решено было сделать всё это на основе программы 7-zip (7zip) архиватора. Благо он был бесплатный, поддерживал различные форматы (хотя в данный момент обошлись одним), а из минусов было только одно - 7-zip не умеет создавать самораспаковывающиеся архивы. Да это впрочем и не нужно.
Сама программа была установлена в папку "C:\Program Files\7-Zip\", где "C:\Program Files\7-Zip\7zG.exe" - путь к консольному исполняемому файлу.
Что было сделано. Был сварганен следующий батник для выполнения архивирования:
set dd=%date:~0,2%
set mm=%date:~3,2%
set yy=%date:~6,4%
net stop MySQL
"C:\Program Files\7-Zip\7zG.exe" a -tzip -p12345 z:\(%yy%-%mm%-%dd%).zip @list.lst Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
net start MySQL
Здесь сначала задаются переменные для именования архива, затем командой net stop MySQL останавливается MySQL-сервер (иначе базу данных хрен скопируешь - отдельные таблицы могут быть заблокированы).
Путь к программе, как я и говорил, "C:\Program Files\7-Zip\7zG.exe" (на всякий случай в кавычках).
Ключом -tzip формат архива устанавливается в zip (по-умолчанию формат 7z).
Через пробел с ключом -p задается пароль архива: -p12345
Копирование необходимых файлов и папок осуществляется в ахрив на внешний диск. Путь к архиву задается как
z:\(%yy%-%mm%-%dd%).zip
Разумеется внешний диск портирован в систему как диск Z:.
Отдельного пояснения заслуживают пути к файлам list.lst (содержит список папок и файлов для копирования) и xlist.lst (содержит список файлов и файлов, которые нужно исключить при копировании в архив).
Если с файлом list.lst всё просто, и выглядит он следующим образом:
e:\ftp
E:\www
c:\mysql\data
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
C:\Program Files\Apache Software Foundation\Apache2.2\conf
C:\Program Files\Chameleon Clock\alarms.lst
c:\php5\php.ini
c:\WINDOWS\my.ini
C:\soft\copyFTP.bat
C:\soft\copyVnutr.bat
C:\soft\list.lst
C:\soft\xlist.lst
C:\Program Files\SHOUTcast\sc_serv.ini
C:\Program Files\SHOUTcast\sc_serv.rip
Т.е. здесь просто указываются пути к папкам и файлам в формате Windows.
То вот с файлом xlist.lst пришлось изрядно попотеть, прежде чем стало понятно, как задавать исключения для путей:
ftp\anonymous\install\
ftp\anonymous\incoming\
ftp\rcbzi\.Trash-1000\
ftp\rcbzi\aksutin\
ftp\rcbzi\Programs\
ftp\rcbzi\Temp\
ftp\common\Кадры\Поздравления\
ftp\common\Video\
ftp\common\Кадры\Учеба\
ftp\rcbze\Ребещенко\_Фото\
www\joomla15\
www\joomla25\
www\Joomla3\
Т.е. обратите внимание. Например мы добавляем в список разрешенных путей:
e:\ftp
Но если при этом внутри не нужно копировать папки
e:\ftp\anonymous\install\
e:\ftp\anonymous\incoming\
...
e:\ftp\rcbze\Ребещенко\_Фото\
То пути для исключения мы задаем как:
ftp\anonymous\install\
ftp\anonymous\incoming\
...
ftp\rcbze\Ребещенко\_Фото\
Т.е. начиная с корневой папки (включительно), которая появится в корне нашего архива.
Аналогично с сайтом. В списке путей для копирования у нас:
E:\www
А в исключениях:
www\joomla15\
www\joomla25\
www\Joomla3\
После того, как Вы создали списки и bat-файл, остается повешать его на какую-нибудь программу, выполняющую задания по расписанию и радоваться жизни. :)
Чего Вам и желаю!
P.S.
Копирование происходит ночью с воскресенья на понедельник (когда работники спят), поэтому остановку базы данных и, соответственно, сайта никто не замечает.
Comments
Спасибо тебе большое! Успехов тебе в твоих делах :)
RSS feed for comments to this post