С хостинга на Nas4Free: Rsync через SSH.
Есть много способов сделать резервную копию своего сайта. Можно не париться и доверить это хостеру, но гарантии сохранности вам не дадут, да и отношения с хостером могут внезапно испортиться. Можно архивировать сайт (или не архивировать) и скачивать его по FTP, но это долго, да и большая часть сайта не меняется с момента запуска.
Для решения таких проблем и был изобретен rsync. Он копирует только изменившиеся файлы. А ещё rsync установлен в Nas4Free по умолчанию.
Можно настроить свой сервер rsync на собственном NAS и запускать клиента на хостине по расписанию. Этот способ имеет свои плюсы и минусы, основной из которых: соединение не шифруется, что чревато разнообразными неприятностями.
Мы будем использовать стандартный способ безопасного копирования: rsync поверх сессии SSH. Подключаясь к серверу по SSH, мы обычно вводим пароль, но это не единственный и не самый удобный способ, ведь есть ещё ключи. Есть даже удобная памятка. Для использования ключей нужно немного подготовить свой Nas4Free. Понадобится воспользоваться консолью от имени root'а.
Прежде всего, если у вас установлена версия embedded — придется позаботиться о том, чтобы файлы не пропали после перезагрузки. В этом поможет форум Nas4Free. Создадим на жестком диске каталог для постоянного хранения файлов, например так
mkdir -p /mnt/data/home/root
и попросим ОС писать новые файлы туда.
mount_unionfs /mnt/data/opt/usr_local /usr/local
Эту же команду следует добавить в раздел «система — дополнительно — командные скрипты» web-интерфейса администратора. У меня жесткий диск подключен к каталогу /mnt/data, у вас может быть по-другому.
Теперь пора создать RSA-ключ администратора:
ssh-keygen
Просто соглашайтесь со всем.
Если хостинг-провайдер оказывает услугу доступа по SSH на нестандартном порту, лучше сразу создать алиас для такого сервера.
nano ~/.ssh/config
и наполнить его примерно так
Host webhost Hostname ssh.example.com User client365 Port 32122
Это избавит вас от ввода имени и порта при каждом подключении.
К сожалению, в Nas4Free по умолчанию нет ssh-copy-id. Но есть вариант «для бедных»
cat ~/.ssh/id_rsa.pub | ssh -p 32122 client365@ssh.example.com "cat - >> ./.ssh/authorized_keys"
или, с использованием псевдонима,
cat ~/.ssh/id_rsa.pub | ssh webhost "cat - >> ./.ssh/authorized_keys"
Ошибка «файл не существует» или подобная означают, что каталога .ssh в домашнем каталоге на сервере нет. Создадим его.
ssh webhost "mkdir -p .ssh"
Пришла пора проверить, что получилось:
rsync --compress --checksum --archive --delete webhost:/full/path/to/public_html/ /mnt/data/www-backup/webhost
Слэш на конце пути источника означает, что следует копировать содержимое каталога, а не каталог целиком — в каталоге webhost rsync разместит не подкаталог public_html, а его содержание.
Возможны 2 вида ошибок: «файл не найден» — когда путь к исходным файлам указан неправильно и «команда не найдена» - когда на сервере не установлен rsync или его использование запрещено администратором. Первая проблема решается методом ls — cd — ls — cd — pwd — копировать — вставить. Со второй лучше обращаться в техническую поддержку хостинга.
Необходимо отметить, что при добавлении команды синхронизации в планировщик заданий Nas4Free «система — дополнительно — cron» имя исполняемого файла указывается полностью: /usr/local/bin/rsync
Так можно сэкономить время, нервы и трафик и себе и хостинг-провайдеру.
А как делаете копии своих сайтов вы, дорогие читатели?
Комментарии
Удивительный момент,
Удивительный момент, насколько можно выиграть в финансовом плане с использованием продуктов опенсорс! Не прийдется платить солидные суммы за коммерческое программное обеспечение и получить схожий результат. Да, данные программы не так хорошо выглядят, зачастую сложны в настройках, но здорово выполняют свою работу. Спасибо автору за разъяснения и простое решение надежного, шифрованного способа сделать резервную копию. Хочется от души поблагодарить его и всех людей которые не ленятся банально написать инструкцию. Это важно.