1

Я хотел бы сделать резервную копию содержимого веб-серверов с минимальными усилиями. В настоящее время у меня есть PHP-скрипт, который дает мне список загруженных картинок, и затем я использую wget для загрузки их всех через HTTP.

Данные MySQL извлекаются с помощью сценария PHP, который выводит базу данных, которую я извлекаю с помощью wget через HTTP.

Есть ли способ скачать все с FTP? Чтобы я мог полностью отразить веб-сервер и отслеживать любые изменения?

К сожалению, я могу использовать только простой FTP и PHP на сервере, я не могу использовать сценарии оболочки или mysqldump или tar на сервере.

3 ответа3

2

Я думаю, что вам нужно несколько частей информации для восстановления веб-сервера. Файлы html/jpg/script, которые представляют собой сайт, данные базы данных и конфигурацию веб-службы. Вы можете добавить к этому SSl сертификаты, сетевые конфигурации и информацию о пользователе, если ваш сайт использует их.

Как только мы узнаем, что нужно для его восстановления, как мы получим эти данные? Самый простой способ, как правило, из коробки, которая содержит данные. Запустите сценарий, чтобы сгенерировать данные, дамп базы данных и т.д., Собрать их все в tar-файл и установить ftp из коробки.

В качестве альтернативы, вы можете запустить скрипт как задание cron на веб-сервере, но примите внешний блок и получите файл tar.

2

Есть ли способ скачать все с FTP?

Да, но вам нужно (или попросить кого-то) установить FTP-сервер и настроить его для вас. Я бы предложил против этого, хотя. FTP отправляет пароли в виде открытого текста, и, насколько мне известно, для него нет обычной оболочки SSL (например, STARTTLS). Таким образом, FTP - это дыра в безопасности, если вы не планируете использовать защищенную VPN. Я предлагаю использовать sftp, который по сути является ssh-соединением, которое отвечает на команды, подобные ftp.

Это динамический сервер? Есть ли у него PHP или CGI или любой другой код на стороне сервера? Если это так, HTTP-запросы могут показывать только HTML во время выполнения кода, а не основной источник. Это не резервная копия. Вы должны сделать резервную копию источника с помощью sftp.

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

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

Лично я бы чувствовал себя более комфортно с «если я распакую этот файл, это мой сайт», а не «если мой git-репозиторий не сожжен, я могу найти тег на этот день, и это мой сайт». В чрезвычайной ситуации (и все резервные копии) сложность не то, что вы хотите.

0

Чтобы решить проблему, связанную с тем, что у меня есть только FTP, у меня наконец-то появилось изящное решение: curlftpfs и rsync.

# Create a mountpoint for the FTP.
tempdir=$(mktemp -d)
chgrp fuse "$tempdir"
chmod 700 "$tempdir"

# Mount the FTP
curlftpfs "$server" "$tempdir"

# Copy all the new data into the current directory
rsync -avE --delete "$tempdir/$subfolder" "$current"

# Release the mounted FTP
fusermount -u "$tempdir"
rmdir "$tempdir"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .