|
|
|
Опции темы | Поиск в этой теме |
05.04.2012, 16:58 Вверх | #1 | |||
Коварный тип
|
Как организовать автоматическое резервное копирование баз данных на FTP ?
Вопрос такой: Как организовать автоматическое резервное копирование баз данных на FTP ? Стоит Ubuntu 11.04, база естественно в майскуле, можно конечно вручную в самом дле постоянно бэкапить ее и качать, но можно ли сделать чтобы сервак по крону снимал дамп базы и отправлял его на левый FTP для надежного хранения ?
|
|||
05.04.2012, 19:11 Вверх | #2 | |||
Fedoraвод
|
стандартная задача
Код:
#!/bin/sh # настройки базы данных mysql base_user='' base_pass='' base_table='' # настройки удаленного fpt ftp_user='' ftp_pass='' ftp_host='' # прочие настройки dt=`date +%Y_%m_%d` path='/root/mysql_backups' sitename='table_name' mysqldump --opt $base_table --user=$base_user --password=$base_pass | gzip -9 > $path/$dt.$sitename.sql.gz lftp -e 'mirror -R /root/mysql_backups /backups; bye;' -u $ftp_user,$ftp_pass $ftp_host кидаешь содержимое в файл по названием типа mysql_backup.sh делаешь его исполняемым и прописываешь в кроне когда запускаться. Либо кидаешь в папку ежедневного запуска. пользуйся на здоровье ))) ЛинЭкс фаревА |
|||
Последний раз редактировалось Злой; 05.04.2012 в 19:16.. |
||||
06.04.2012, 15:10 Вверх | #3 | |||
Коварный тип
|
Блин, а у меня получается так что на сервере пока 6 баз данных, а в будущем будет еще больше. Я нашел команду для создания бэкапа всех баз данных которые имеются на сервере, получается так:
mysqldump -uAdmin -pMyPass --all-databases > all_databases.sql После выполнения команды все базы собираются в одну кучу в файл all_databases.sql. Можно как то разделить эти баз на куски, чтобы каждая база была отдельно в файле? И еще, я так понимаю lftp командой mirror делает зеркало папки на удаленный FTP. А если к примеру какие то файлы были удалены и какие то обновлены, он на FTP сам удалит файлы те что были удалены на сервере и обновить те что были обновлены ? Т.е. по сути хочу создать полный автобекап всех сайтов каждый день. |
|||
06.04.2012, 15:53 Вверх | #4 | |||
Коварный тип
|
На счет крона нашел это:
http://habrahabr.kz/blog/746.html , только пихать придется свой скрипт. А вот еще вариант нагуглил, с помощью Back In Time, делает все сама практически без настроек ) |
|||
Cказали cпасибо: |
07.04.2012, 16:41 Вверх | #6 | |||
Коварный тип
|
Ну так их будет прирастать со временем.
Короче говоря к примеру у меня 4 базы. Получается скрипт такой: PHP код:
|
|||
08.04.2012, 13:12 Вверх | #7 | |||
Fedoraвод
|
тупишь, у тебя на выходе три раза перезапишется
Код:
$path/$dt.$sitename.sql.gz Код:
$path/$dt.$base_table1.sql.gz я думаю что не проблема указать юзера и его пароль для каждой базы, сам видишь что это не смолжно |
|||
Последний раз редактировалось Злой; 08.04.2012 в 13:21.. |
||||
Cказали cпасибо: |
08.04.2012, 21:04 Вверх | #8 | |||
Коварный тип
|
Злой, аааааа. Все заработало. Осталось только в крон внести скрипт на ежесуточное выполнение.
А можно как нить папки зеркалируемые исключить для lftp ? Или проще указать конкретно копируемые папки за несколько операций ? Просто есть папка с временными файлами, сесиями и логами апача, их как бы копировать не надо, а остальное надо. И до кучи может подскажешь, к примеру во время копирования удаленный сервер сервейджа заблочил временно FTP, у меня такое часто бывает когда копируешь тонну мелких файлов по фтп, он на 2-3 гиге тупо рвет соединение и не дает временно подцепиться. Сейчас наблюдал это при исполнении скрипта. Он тупо пишет невозможно соединиться и повторяет попытку до бесконечности, пока не прервешь выполнение скрипта и через некоторое время запустишь снова. Как то это можно победить ? |
|||
Последний раз редактировалось Serberg; 08.04.2012 в 21:42.. |
||||
09.04.2012, 01:14 Вверх | #10 | |||
Fedoraвод
|
хз, передавал по 200-300 гигов, такого не замечал.
хз как их исключать, но проще действительно синхронизировать несколько папок за несколько заходов. Я лично вообще не парюсь Код:
cd /var/www tar -czf $path/$dt.$sitename.tar.gz * |
|||
Cказали cпасибо: |
09.04.2012, 21:32 Вверх | #11 | |||
Коварный тип
|
Злой, короче говоря оптимизировал до максимума резервное копирование. Сейчас копируются только те папки скрипта, которые могут изменяться со временем + база данных, остальное все просто не трогаю. Скрипт получился массивным, но выполняется за 1 минуту )
А в крон добавил прописав выполнение скрипта в кронтаб (nano /etc/crontab). Если кому то надо будет, то вот мануал по крону Код:
30 17 * * * root /var/mysql_backup.sh Думаю теперь еще обратное зеркалирование сделать, чтобы он подцеплялся к сервейджевским аккаунтам и бэкапил с них данные на сервак, в папку бэкапов. Я так понимаю что делается это без ключа -R для команды lftp или нет ? |
|||
Последний раз редактировалось Serberg; 09.04.2012 в 21:42.. |
||||
Cказали cпасибо: |
10.04.2012, 01:14 Вверх | #12 | |||
Fedoraвод
|
К сожалению на моей тачке lftp не установлен, а лесть на дедики влом ради просмотра man'ов, украл из инета
Синхронизация текущей папки с папкой на удалённого сервера (синхронизировать локальный каталог с удалённым), т.е. закачка с сервера. Код:
$ lftp -e 'mirror -e каталог-на-сервере локальный-каталог; bye;' -u логин,пароль удалённый.хост Код:
$ lftp -e 'mirror -R локальный-каталог каталог-на-сервере; bye;' -u логин,пароль удалённый.хост |
|||
Cказали cпасибо: |
10.04.2012, 01:44 Вверх | #13 | |||
Коварный тип
|
Злой, ну я имел ввиду что бюез ключа -R но та же команда. Я гугли по теме, читал. Просто накосячить не хочется. Я уже ставлю эксперименты на безопасных папках, от которых ничего не зависит.
Отпишусь как все настрою и это заработает. |
|||
10.04.2012, 20:45 Вверх | #14 | |||
Коварный тип
|
Все, проникся душой. Короче говоря для обратного зеркалирования можно составить команду так:
Код:
#!/bin/sh # настройки удаленного fpt ftp_user='' ftp_pass='' ftp_host='' lftp -e 'mirror --only-newer --delete /papks_s_saitom /home/test; bye;' -u $ftp_user,$ftp_pass $ftp_host Дальше, прописал ключи: --only-newer - заставляет lftp копировать только новые файлы (или измененные) --delete - удаляет лишние файлы, которые находятся в локальной директории (т.е. если на удаленке файлы были удалены) - то тут они тоже удалятся. Так же есть команда --exclude - позволяет исключить ненужные директории, но я ее не применял. ps Сам в шоке от того что у меня начинает что то получаться. Злой, бью тебе челом в ноги ) |
|||