Как мы делаем бэкапы нашего сервера

Как известно, люди делятся на три основные категории:
— кто не делает бэкапы (резервные копии);
— кто делает бэкапы;
— кто проверяет сделанные бэкапы 🙂

Для работы мы арендуем целый сервер в интернете. На нем располагается наш сайт, наша CRM, наша система контроля версий исходного кода (Team Foundation Server). После того, как лишь чудом мы не остались без всех данных сразу, пришлось развернуть тщательное резервное копирование сервера.

Мы делаем бэкапы в следующем виде:
а). Отдельно, в виде файлов:
— база данных SQL Server Express (сервер разработки);
— база данных MySQL (сайт);
— файлы веб-сайта.
Такие бэкапы нужны, чтобы иметь возможность быстро откатить неудачные изменения.

б). Параллельно делается бэкап всего жесткого диска.
Он нужен на те случаи, когда повреждается винчестер. Один такой случай уже был. К счастью, у нас работает два винчестера в зеркальном RAID.
Бэкап жесткого диска также сохраняется в виде файла.

Но мало сделать резервные копии файлов. Эти файлы нужно регулярно скачивать и хранить локально. Для этого мы развернули отдельный веб-сервер (Apache) на отдельном порту. В него складываются все резервные копии после создания.
На нашей локальной машине периодически запускается скрипт, который скачивает бэкапы на наш компьютер.

Бэкап SQL Server Express делается с помощью скриптов.
Пишем SQL-скрипт для создания резервной копии базы:

BACKUP DATABASE Tfs_Configuration TO DISK = N’D:ackupsTfs_Configuration.bak’
WITH NOFORMAT, INIT, NAME = N’Tfs_Configuration Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10

Аналогичные скрипты для всех остальных баз.

Создаем bat-файл, в котором прописываем:
«C:Program FilesMicrosoft SQL Server100ToolsBinnSQLCMD.EXE» -S (local)SQLExpress -i «C:Backup scriptsSqlExpress.sql»
В данном случае SqlExpress.sql – тот самый SQL-скрипт, о котором говорилось выше.

Бэкап файлов веб-сайта и файлов MySQL-базы делается тоже с помощью bat-файла и архиватора 7z:
«c:Program Files7-Zip7z.exe» a -r d:/backups/www.7z c:/inetpub/www/*

Веб-сервер Apache настроен так, что он как раз позволяет скачивать файлы из папки d:/backups, куда и складываются все бэкапы.

Дальше остается просто настроить регулярный запуск этих bat-файлов с помощью планировщика задач:

Для того, чтобы регулярно скачивать созданные бэкапы на локальную машину, создаем на ней vbs-скрипт следующего содержания:

‘ Ссылка на скачиваемый файл
strFileURL = «http:// XXXXXXXXX / XXXXXXXXX.bak»

‘ Путь для сохранения файла
strHDLocation = «Z:XXXXXXXXX XXXXXXXXX.bak»

Set objXMLHTTP = CreateObject(«MSXML2.XMLHTTP»)

objXMLHTTP.open «GET», strFileURL, false
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject(«ADODB.Stream»)
objADOStream.Open
objADOStream.Type = 1 ‘adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 ‘Set the stream position to the start

Set objFSO = Createobject(«Scripting.FileSystemObject»)
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

Далее остается только периодически, с помощью того же планировщика задач, запускать этот скрипт (cscript.exe XXXX.vbs).

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

Продукция
Ещё мы производим:
Спасибо
Ваш запрос отправлен!
ОК