rss
Навигация
ИнструментыЯмаПолезные ссылкиЗачем мне блог?Рейтинг контентаКодекс админаФотогалереяi-payrss
Последние записи
Смонтировал видюху, моменты из жизни 2013-15На уазике до ск. Верблюд по Торгашинскому хребтуBreaks волна #9 осенний funkК нам на дачу пришел медведьСтарая бомба! Крутой рифмоплет
Каменты [еще]
2017-05-17 11:25:31 [articles] Владимир:
2016-12-20 17:49:41 [articles] Виталик:
2016-12-01 23:34:25 [news] Meteor:
2016-11-11 03:35:47 [articles] Tata10:
2016-07-27 14:28:19 [articles] Сергей:
2016-05-17 09:56:26 [articles] юра:
2016-04-29 18:03:48 [articles] agatsky.dn:
Теги
Друзья
Блог малова Лучшие стихи зая =) Мед в Красноярске Daniil V. Savenkoff Blog | То, что мне когда-то пригодилось... Велкам в друзья!

Делаем backup веб сервера через ftp

Января
2011 года
25
Теги: скрипты, windows, ftp, mysql, web,
Раздел: zgbox.ru -> Статьи -> Windows -> Делаем backup веб сервера через ftp
Просмотров: 3270
В этой заметке описан способ реализации удаленного бэкапа веб сервера через ftp и mysql. На примере рассмотрен быкап сайта работающего на php и mysql базе.
Дано:
удаленный сервер с именем mysite.ru
на нем есть ftp сервер с доступом под учеткой ftp_user:ftp_pass
доступ к mysql базе веб сервера под учеткой db_user:db_pass
учетки от ftp и mysql соответственно предоставляют доступ только к файлам и базе нашего веб сервера

Итак суть:
Мы запускаем свой скрипт (который щас будем писать), скрипт автоматически скачивает с ftp все файлы сайта (исключая некоторые по маске, например *.mp3), затем делает mysql дамп базы сайта. Ложит дамп и файлы в одну директорию и архивирует все это дело rar'ом с вот таким именем архива backup_mysite_2011-01-23.rar

Нужные инструменты
mysqldump.exe
rar.exe
wget.exe

mysqldump - для быкапа баз mysql, обычно идет в комплекте с mysql сервером, но также можно найти отдельно.
wget - консольная качалка интернета, умеет тянуть с ftp, http, юзать прокси и еще много чего.

Начнем
Для возможности быкапа, на сервере естественно должен быть поднят ftp и разрешена учетка в mysql. На ftp должна быть создана учетка разрешающая доступ к каталогу где собстно лежат все файлы веб сервера.
Собираем инструменты в кучку или качаем

Файл backup_tools.zip Инструменты для быкапинга rar, wget, mysqldump Размещен
размер 1.01 mb 2011-07-18 11:49:09
Скачан 102

Создаем у себя гденибудь директорию в которой будем все делать, например c:\backup
и ложим в нее инструменты.
Создаем файл backup_mysite.cmd в нашей директории и пишем в него такой код:

SET db_user=root
SET db_pass=root_pass
SET db_host=mysite.ru
SET db_name=mysite_db

SET ftp_user=ftp_user
SET ftp_pass=ftp_pass
SET ftp_host=mysite.ru

SET vdate=%date:~6%-%date:~3,-5%-%date:~0,-8%
SET fname=backup_mysite_%vdate%.rar
SET tmpfolder=mysite
SET bckpfolder=backup_mysite

md %bckpfolder%

@wget -t 3 -T 30 -N -l 8 -R *.mp3,access.log,error.log -nH -nv -P %tmpfolder% -r ftp://%ftp_user%:%ftp_pass%@%ftp_host%/
mysqldump -u%db_user% -p%db_pass% -h%db_host% %db_name% > %tmpfolder%/dump_%db_name%.sql
rar a -ed -m1 -ep1 -t -mszip;rar;mp3;jpg;gif %bckpfolder%/%fname% blog

rm -r %tmpfolder%

Жирным в скрипте выделены переменные которые необходимо заменить на собственные.

Принцип работы скрипта:
    1. Cкрипт определяет переменные
    2. Создает папку куда будут складываться быкап архивы (%bckpfolder%)
    3. wget качает файлы сайта во временную папаку (%tmpfolder%), не качает файлы *. mp3,access.log,error.log
    4. mysqldump делает дамп базы сайта во временную папку
    5. rar запаковывает содержимое временной папки, не сжимая файлы zip,rar,jpg,gif и кладет архив в папку где будут наши архивы быкапов (%bckpfolder%)
    6. rm -r %tmpfolder% - удаляет временную папку, но можно ее и не удалять, тогда wget будет докачивать только недостающие и измененные файлы, что актуально для больших быкапов

Ньюансы
Если необходимо использовать пассивный режим Ftp то в скрипте, к параметрам запуска wget нужно добавить ключ --passive-ftp
По умолчанию глубина рекурсивности у wget равна 4, т.е дальше 4го каталога он не копирует, для этого есть ключ запуска -l x где x - цифра задающая глубину рекурсивности, в данном скрипте она установлена в 8 (-l 8)
Комментарии к записи:
0leZik 2011-01-25 11:57:01 [ответить]
Трололошеньке, хоче реализовать такую радость...
=ZG= 2011-01-25 12:16:33 [ответить]
погоде я исчо недописал =)
=ZG= 2011-01-25 14:37:12 [ответить]
ну готово вобщем
Серж 2011-07-03 21:05:28 [ответить]
Очень полезный скрипт для всех у кого есть сайты!
если файл уже существует на локальном компьютере, то что делает скрипт с ним: пропускает, перезаписывает,
или сначала проверяет есть ли изменения ?
=ZG= 2011-07-03 23:36:03 [ответить]
если имеете ввиду уже забыкапленный архив с датой в имени, то при повтором быкапе в этот же день он перезапишется.
если иметь ввиду например кучу файлов стянутых wget'ом ранее которая потом архивируется, то wget, если видит что такой-то файл уже быкапился - пропускает его если он такойже или перезаписывает если он другой по дате\размеру
Серж 2011-08-01 02:47:19 [ответить]
Спасибо.
жаль, что обычно на виртуальном хостинге нельзя подключаться к БД из внешнего источника :(
Серж 2011-08-09 08:09:28 [ответить]
заметил что этот скрипт НЕ КОПИРУЕТ ФАЙЛЫ по ftp дальше 4 уровня вложенности папок - т.е. не копируются все дальнейшие папки и файлы после 4 уровня вложенности.
Как быть?
=ZG= 2011-08-09 11:16:15 [ответить]
и вправду, решение есть:
в скрипте к параметру запуска wget который качает файлы с фтп нужно добавить ключ -l 8 который указывает глубину рекурсивности, по умолчанию видимо 4.
В статье подправил.

Добавление комментария

Ваше имя: (Антиспам) Какой сейчас год?
Ваш комментариий: