Бекап базы данных в Dropbox

dropbox-1

Как гласит древняя китайская поговорка: «Все люди делятся на тех, кто уже делает бэкапы, и на тех, кто еще не делает».

Вот и я в очередной раз задумался о необходимости дополнительных бекапов. Основные требования такие:

  • Легкий доступ, по возможности отовсюду (никогда не знаешь, когда и где потребуется доступ к резервной копии)
  • Относительно большой дисковый объем
  • Низкие накладные расходы

Для этого очень подходит Dropbox. Для загрузки бекапа в Dropbox я использую класс от Jaka Jančar.

Выглядит это так:

$dumpFile = $_SERVER['DOCUMENT_ROOT'] . CONFIG_TEMP_PATH . '/avtobeginner-' . date("d-m-Y_H-i-s") . '.sql';

$dumpQuery = 'mysqldump -u' . CONFIG_DB_USER . ' -p' . CONFIG_DB_PASSWORD . ' -h' . CONFIG_DB_HOST . ' ' . CONFIG_DB_NAME . ' > ' . $dumpFile;
exec($dumpQuery);

$dumpQuery = 'gzip -f ' . $dumpFile;
exec($dumpQuery);

$dumpFile .= '.gz'; 

if (file_exists($dumpFile)) {
    $Uploader = new DropboxUploader(CONFIG_DROPBOX_EMAIL, CONFIG_DROPBOX_PASSWORD);
    $Uploader->upload($dumpFile, '/Backup/');  

    /* Пишем в лог об успешном бекапе */

    unlink($dumpFile);
}
else {
    /* Пишем в лог об успешном бекапе */
}

Скрипт запускается по крону утром через день.

2 комментария on "Бекап базы данных в Dropbox"

  1. лучше объединить два exec в 1
    mysqldump –opt -u USER -p PASS -h HOST | gzip -c > YYYYMMDD.sql.gz

    и что-то у тебя с подсветкой синтаксиса не то: знак больше.

  2. У меня объединено (через точку с запятой). Я для наглядности разбил.

Got something to say? Go for it!