Если Вы администрируете сервер, то перед Вами (как и когда-то передо мной) наверняка возникла задача резервного копирования файлов для их последующего восстановления. Если Вы продвинутый администратор, у Вас наверняка в запасе есть уже отлаженный способ, как сделать 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   

+1 # СпасибоGuest 2014-07-02 08:20
Спасибо тебе. Долго не мог разобраться как исключать из архивирования ненужные папки. Верную информацию нашёл только у тебя.
Спасибо тебе большое! Успехов тебе в твоих делах :)
Reply | Reply with quote | Quote | Report to administrator
0 # ПожалуйстаEcolora 2014-07-02 08:27
Рад, что данная информация оказалась полезной. :lol:
Reply | Reply with quote | Quote | Report to administrator
0 # RE: Бесплатное резервное копирование файлов и данных диска программой 7zipGuest 2014-08-14 08:00
тоже тупил весь вчерашнийдень с исключительными директориями при архивировании :o , спасибо
Reply | Reply with quote | Quote | Report to administrator

Add comment


Security code
Refresh