Архивирайте MySQL база данни с PHP, след което шифровайте файл за качване на друг сървър

Прочетох няколко SO за свързани кодови фрагменти и предложения за това, но не мисля, че има консенсус между тях за моята задача, така че комбинирам някои въпроси, които да задам още веднъж. Освен това другите бяха доста стари и бих искал да получа някои актуализирани отговори...

Целта

  • Изхвърлете напълно SQL DB (по такъв начин, че това да може да бъде импортирано обратно в MySQL, ако DB бъде изтрито...). В идеалния случай този 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