Сделайте резервную копию базы данных MySQL с помощью PHP, затем зашифруйте файл для загрузки на другой сервер.

Я прочитал несколько SO о связанных фрагментах кода и предложениях для этого, но я не думаю, что между ними был консенсус для моей задачи, поэтому я объединяю некоторые вопросы, чтобы задать еще раз. Кроме того, другие были довольно старыми, и я хотел бы получить обновленные ответы...

Цель

  • Полностью сбросить базу данных SQL (таким образом, чтобы ее можно было импортировать обратно в MySQL, если база данных будет уничтожена...). В идеале этот дамп sql можно было бы импортировать, например, через PHPMyAdmin.
  • Возьмите дамп, зашифруйте его через PHP5 (я думаю с помощью mcrypt) .
  • Возьмите зашифрованный файл и загрузите его на удаленный сервер через SSH2 в PHP.
  • Удалить локальный зашифрованный файл и локальный незашифрованный дамп.

На оборотной стороне — нужен ли мне доступ к сохраненной резервной копии

  • Вручную SFTP на удаленный сервер, где хранятся резервные копии.
  • Загрузите зашифрованную резервную копию.
  • Расшифруйте его.
  • Вручную импортировать обратно в MySQL через PHPMyAdmin

Мне действительно не нужен скрипт для обратного процесса. Если мне когда-нибудь понадобится резервная копия, я уже глубоко вовлечен в резервное копирование и запуск, поэтому расшифровка вручную не должна быть проблемой. Однако я хочу быть уверен, что знаю лучший способ сделать это, помимо чтения руководства по PHP...


person Shackrock    schedule 14.08.2011    source источник


Ответы (2)


Спасибо Тим. Я нашел хорошее готовое решение в PHPMySQLAutoBackup. Я добавляю код, который будет шифровать с помощью GPG, используя system().. хотя на данный момент это не без моих трудностей. Я открою новый вопрос, если у меня по-прежнему будут проблемы с GPG...

person Shackrock    schedule 21.08.2011

Звучит довольно просто, правда.

Если вы хотите написать сценарий на PHP, это нормально. Однако вам, вероятно, не нужно много функций PHP. В основном вы будете использовать простые управляющие структуры, shell_exec(), который вы будете использовать для управления несколькими инструментами командной строки, такими как mysqldump, gpg (или другая криптографическая утилита), scp (для отправки ваших данных за пределы сайта) и unlink() для удаления вашей локальной копии.

Похоже, вам просто нужны указатели на инструменты командной строки. Я упомянул тот, который я бы использовал выше. Кроме того, нужно просто собрать правильные строки командной строки и выполнить их с помощью exec() или shell_exec().

person timdev    schedule 14.08.2011