Назад | Перейти на главную страницу

Резервное копирование веб-сайта без прямого доступа SQL и только FTP-доступ

Веб-сайт, с которым я помогал, размещен на веб-хосте (не мой выбор), который предоставляет только FTP для файлов (без доступа к оболочке), а доступ к базе данных можно получить только с самого хоста или phpMyAdmin.

Сайт работает на Apache с версией PHP 5.3.13.

Поскольку с веб-сайтами время от времени случаются неприятные и непредвиденные вещи, я хотел бы иметь резервную копию веб-сайта. У меня, конечно, уже есть большая часть инфраструктуры локально (схемы базы данных и исходные файлы веб-сайтов), но если веб-сайт будет взломан или произойдет что-то еще, у меня останется пустой веб-сайт. Поэтому мне, конечно, нужно сделать резервную копию всех загруженных пользователем носителей и всех данных в базе данных.

Проблема в том, что я действительно не знаю, как это сделать, когда все, что у меня есть, - это FTP-доступ, а не прямой доступ к базе данных. Есть какие-нибудь советы о том, как получить приличную автоматическую резервную копию этого сайта, которую можно периодически запускать без особых проблем?

Вы можете заставить его работать, немного взломав (если `не работает ниже, попробуйте exec, system, passthru, все, что можно). Вы также можете отключить эти ограничения, если немного поработаете над этим, но я не думаю, что здесь их обсуждать.

Сценарий будет следующим:

<?php
`mysqldump -uUSERNAME -pPASSWORD DATABASE > dump.sql`;
`tar -cf backup.tar .`;
// Download backup.tar
unlink('backup.tar');
?>

Конечно, это базовая информация, но она просто для того, чтобы дать вам представление. Чтобы закрепить это, имейте backup/ каталог, защищенный паролем с .htaccess таким образом, чтобы только вы могли загрузить их с паролем, и поместите туда backup.tar.

Если у вас есть такой уровень «доступа к оболочке», возможности безграничны.

Вы можете воспользоваться cron-сервисом (см. http://www.cronjobservices.com/ или ваш хост может предложить один) в сочетании с MySQLDumper (http://www.mysqldumper.net/), если у вас нет доступа к оболочке.

Если у вас есть доступ к оболочке (я так не думаю, исходя из вашего описания), я бы рекомендовал использовать mysqldump и cronjobs.

Для содержимого файлов вы можете создать php-скрипт, который заархивирует все, но вам все равно придется загружать эти файлы самостоятельно.

Вы можете вручную выгрузить db из phpMyAdmin в файл на сервере, чтобы избежать проблем с тайм-аутом http при экспорте. Я бы просто трижды проверил панель управления веб-хоста, чтобы найти возможность делать дамп базы данных на сервер по автоматическому расписанию. Очевидно, так было бы намного лучше! В любом случае, как только база данных будет выгружена на сервер, вы можете создать резервную копию дампа с другими данными файловой системы приложения.

Есть несколько программ, которые позволяют выполнять инкрементное резервное копирование в стиле rsync через ftp. В противном случае вам придется каждый раз делать полную резервную копию. Посмотри пожалуйста этот вопрос ServerFault. Мой опыт работы с curlftps, упомянутым внизу, заключается в том, что тайм-ауты / медленность могут затруднить резервное копирование файлов среднего размера (например, более 20 МБ) - у него проблемы с чтением конца файла. Но, YMMV. Удачи!

Учитывая вашу настройку, автоматическое резервное копирование будет затруднено. Есть ли у провайдера веб-хостинга какие-либо варианты резервного копирования? Возможность запускать cron / запланированные задания? Вы, наверное, уже знаете, но phpMyAdmin может выполнять mysqldump, а с FTP вы можете получать файлы, но это не происходит автоматически.

Теоретически вы мог программно FTP к вашей учетной записи веб-хоста и загрузка файлов, а также сценарий загрузки дампа данных MySQL, но это неэффективное использование времени и ресурсов и не является надлежащим резервным копированием, IMO.

Другой вариант, который вы можете рассмотреть, - это зеркальное отображение вашего сайта локально или в другое место по вашему выбору с помощью wget, curlи т.д. Это даст вам статическую версию вашего сайта со статическими файлами и поможет вам восстановить ваш сайт, если вам нужно. Это можно настроить с помощью cron в вашей локальной системе, но, конечно, данные для восстановления базы данных не включены в эту опцию.

Чтобы иметь возможность восстановить на определенный момент времени, вы просматриваете регулярно создаваемые резервные копии / моментальные снимки - что-то, что должен предоставить вам хост-провайдер.

Несколько напутственных мыслей:

  • Я был бы обеспокоен, если бы мой веб-хостинг предоставлял только FTP-доступ, поскольку FTP передает учетные данные в виде открытого текста.
  • Если вы ожидаете, что случится что-то плохое, составьте список и посмотрите, как вы можете с ними справиться. Например, sftp поверх ftp, надежные пароли, ограниченный доступ к компонентам и т. Д.
  • Время искать нового веб-хостинга? (_:

HTH и удачи!

phpMyAdmin может экспортировать базу данных, хотя ограничения на размер и время ожидания могут сделать это нереалистичным.

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