Главная > Программы > База данных > MySQL MySQL backup с доставкой по e-mailКаждые сутки по cron'у у меня создается бекап (дамп) базы MySQL как для этого блога, так и для других ресурсов. Бекапы складывается на жестком диске и периодически, опять таки по крону, удаляются очень старые архивы. Однако, как говорит Гугло-Почта "Зачем удалять, когда есть более 6-ти гигабайт места?": А действительно, зачем? Осталось только автоматизировать процесс отправки дампов mysql по электронной почте, что впрочем не сложно. Сразу стоит вспомнить о трафике, который будет зависеть от размера дампов, но меня этот вопрос, к счастью, пока не особо беспокоит. Когда я собрался настраивать то, что будет описано ниже, я сразу вспомнил о консольном почтовом клиенте nail, которым пользовался последний раз три года назад. nail - это аналог обычного mail, только имеет одну очень нужную опцию, коей не имеет mail: с ключиком "-a" nail'ом можно из консоли отправлять вложения в теле письма. А нам в данном случае это и требуется. Отправить вложения с помощью команды mail в принципе можно. Классический вариант: использование команды uuencode. Вот, например, так можно отправить письмо, используя base64 кодирование: $ uuencode -m input-file.bin output-file.bin | mail -s "Binary Atachment" admin@yahoo.com Но письмо прийдет к получателю в виде "текста", который еще нужно будет перекодировать обратно. Не удобно: Вариант отпадает. Юзаем nail! Сразу, как-то машинально полез в порты, в папку /usr/ports/mail/nail, но как оказалось, не существует такой папки в дереве портов. Что же это? Проект прикрыли? Ан-нет. daemony# cd /usr/ports/ daemony# make search name="nail" : Port: mail/nail Moved: mail/heirloom-mailx Date: 2006-11-05 Reason: Project name changed Ага. Проект поменял свое название. Да и к тому же достаточно давно. Что ж: daemony# make search name="mailx" Path: /usr/ports/mail/heirloom-mailx Info: BSD mail utility with MIME, IMAP, POP3, SMTP, and S/MIME extensions Maint: ports@logvinov.com B-deps: libiconv-1.11_1 R-deps: libiconv-1.11_1 WWW: http://heirloom.sourceforge.net/mailx.html Port: mailx-0.5 Path: /usr/ports/mail/mailx Info: Mail command with mailx extensions Maint: ports@FreeBSD.org B-deps: perl-5.8.8_1 R-deps: perl-5.8.8_1 WWW: Вот такие премудрости умеет эта маленькая программка. Ставим! daemony# portinstall mailx [Gathering depends for mail/mailx . done] -> Installing 'mailx-0.5? from a port (mail/mailx) -> Building '/usr/ports/mail/mailx' : ===> Registering installation for mailx-0.5 ===> Cleaning for mailx-0.5 Исходники весят 87 килобайт. Отлично. Итак, программка есть, осталось написать скриптик и запихать его в крон. daemony# cat /home/daemony/scripts/sql-send-my-email.sh #!/bin/sh ######################################### # mysql-backup-and-send-by-email script # ######################################### db="portal" USER="portal" PASS="secretword" WRK="/home/daemony/backup/mysql" `/usr/local/bin/mysqldump -u $USER -p$PASS -B $db > $WRK/$db.sql` `/usr/bin/gzip -cf9 $WRK/$db.sql > $WRK/$db'_'$(date +%Y-%m-%d).gz` `/bin/rm $WRK/$db.sql` `/bin/echo "SQL dump of $BASE. Date $(date +%Y-%m-%d)" | /usr/local/bin/mailx -a $WRK/$db'_'$(date +%Y-%m-%d).gz \ -s "SQL Dump $(date +%Y-%m-%d)" g00gl0p0chta@gmail.com` `/bin/rm $WRK/$db'_'$(date +%Y-%m-%d).gz` Скармливаем скрипт крону: daemony# crontab -e # # Crontab configuration file for daemony SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/daemony # 00 01 * * * /home/daemony/scripts/sql-send-my-email.sh Вот и все. Для теста можно попробовать вручную запустить скрипт и проверить, как доходят письма. Учтите, что при отправке слишком больших бекапов Ваш локальный SMTP может послать Вас в сад, в связи с очень большим размером письма. Потому, если Ваши базы быстро вырастают доставлять их до конца жизни на Gmail не получится. Для бекапа базы данных Wordpress есть отличный плагин Домашняя страница автора плагина wp-db-backup. Он и бекапит и отправляет сжатый дамп по электронной почте. Также умеет делать это по расписанию без Вашего участия.
|