rsync: Как настроить синхронизацию двух VPS серверов или настроить бекап на виртуальном сервере
Наверняка вы сталкивались с задачей настоить бекапы на вашем кастомном VPS сервере или у вас возникало желание настроить синхронизацию папок или целых VPS серверов между собой.
Не смотря на кажущуюся с первого взгляда сложность, задачка это достаточно простая. Во всех unix подобных системах есть отличный встроенный инструмент под названием rsync
который отлично справляется со всеми выше описанными сценариями. Кстати rsync работет и на MacOS, так что вы можете бекапить прямо в свой домашний компьютер.
Давайте рассмотрим на примере копирования файлов вашего VPS на локальную машину. Так как я использую MacOS нужно просто зайти в терминал и выполнить вот такую команду:
sudo rsync --archive root@<IP>:/* --exclude={"/tmp/","/sys/","/proc/","/dev/","/mnt/"} .
Данная команда полностью скачает содержимое вашего VPS сервера на ваш локальный компьютер. Перед выполнением заменяем <ip>
на IP вашего сервера, а в параметре --exclude исключаем не нужные нам папки, например node_modules для проектов на ноде или папку vendor если вы подключаете зависимости через композер. В примере выше мы исключили не важные для состояния сервера системные папки.
Основы
Синтаксис использования rsync достаточно простой:
rsync SRC DEST
Где SRC
это исходная папка, а DEST
папка в которую мы будем бекапить данные.
Давайте рассмотрим полезные флаги:
-a
— Рекурсивное копирование следует применять почти всегда
-z
— Сжимает данные для уменьшнние передаваемого по сети трафика
-v
— Выводить в консоль результат работы скрипта
-P
— Отображает прогресс и позволяет возобновить прерванное копирование
-h
— Дополняет параметр -P
конвертируя байты в mb и gb
Все параметры можно сочетать между собой для полной автоматизации. Например, мой самый частый кейс использования:
rsync -azPh SRC DEST
Как вы наверное уже догадались тут идёт синхронизация папок рекурсивно, со сжатием и выводом прогресса на экран.
Автоматизация
Запускать каждый раз руками эту процедуру — весьма утомительно, благо для решения этой задачи у rsync есть демон, который можно запусить как фоновый процесс. Конфиг демона находится по этому пути: /etc/rsyncd.conf
, что бы его запустить используйсте следующую команду rsync --daemon
Удалённый сервер
Для того, что бы настроить автоматический бекап с удалённого сервера всё точно идентично:
rsync -az root@180.0.0.1:/var/www/ /rbackup
После выполнения команды разрешите подключение к удалённому серверу и введить от него парль