Если ты хоть раз терял данные — знаешь, это боль. И ладно бы какие-то временные файлы, но когда это база клиентов, документы, годовая отчётность или даже сайт, который висел в топе — всё, здравствуй, паника.
Я через это прошла. И в итоге пришла к простому, но надёжному решению: rsync + borg + cron. Всё работает на VPS, всё автоматизировано, и главное — понятно, что где лежит и как восстановить. Ниже расскажу, как я организовала бэкап-сервер на Ubuntu, чтобы не зависеть от «облачных решений» с платной кнопкой «восстановить».
Зачем всё это? И почему не просто ZIP?
Да, можно запаковать проект в архив и скинуть на флешку. Разок. Но если ты хочешь, чтобы всё бэкапилось каждый день/ночь/час — это не вариант. Тут нужна система. Я выбрала связку:
- rsync — для быстрой и надёжной синхронизации;
- borgbackup — для дедупликации и сжатия (чтобы не копировать одно и то же по сто раз);
- cron — для автоматизации всего этого добра.
И да, всё это ставится за 30 минут даже на свежей Ubuntu 22.04.
Что такое rsync, и почему он тащит
rsync — это утилита для синхронизации файлов и папок, которая умеет копировать только изменённые части. Работает по SSH, локально или в режиме демона. Простая как гвоздь, быстрая как молния.
Я её использую, например, чтобы забрать с клиентского VPS
/var/www
/etc
Крутые вещи, которые может rsync:
- инкрементальные копии;
- работа через (всё шифруется);
rsync over ssh
- опции вроде ,
--archive
,--delete
,--compress
;--progress
- можно запускать как , если хочется постоянный канал.
rsync daemon
Пример базового использования rsync (рабочий)
Скопировать каталог с одного сервера на другой:
rsync -avz -e "ssh -p 2222" user@remote:/var/www/ /backup/sites/
Что тут происходит:
- — архивный режим (права, симлинки, владельцы);
-a
- — подробнее в консоль;
-v
- — сжатие;
-z
- — указываем, что через SSH и нестандартный порт.
-e
Можно добавить
--delete
Настройка бэкап-сервера: как делаю я
📦 У меня на CloudVPS.by крутится отдельный VPS с 2 ядрами, 40 ГБ SSD и Ubuntu 22.04. На нём:
- стоит rsync (понятно);
- поднят SSH с ограничениями;
- права на папки чётко заданы;
- отдельный пользователь с ключами (никаких паролей!).
backup
Создаю структуру:
mkdir -p /backup/sites chown backup:backup /backup/sites
Добавляю публичный ключ клиента в
~backup/.ssh/authorized_keys
Borg: зачем он нужен и как помогает
rsync
Устанавливаем:
apt install borgbackup -y
Создаём репозиторий:
borg init --encryption=repokey /backup/borg/site1
Добавляем бэкап:
borg create --stats /backup/borg/site1::$(date +%F) /backup/sites/
Что круто:
- каждое — это как снепшот, но весит в разы меньше;
borg create
- можно хранить 30, 100, 500 копий — и не бояться занять весь диск;
- шифруется и локально, и при передаче.
Cron: чтобы всё само крутилось
Создаю скрипт
backup.sh
#!/bin/bash rsync -avz user@remote:/var/www/ /backup/sites/ borg create --stats /backup/borg/site1::$(date +%F) /backup/sites/ borg prune -v --keep-daily=7 --keep-weekly=4 --keep-monthly=3 /backup/borg/site1
И добавляю в cron:
crontab -e
Пример строки (ежедневно в 2:30 ночи):
30 2 * * * /root/backup.sh >> /var/log/backup.log 2>&1
Что получилось в итоге
- Файлы клиента копируются каждый день;
- У меня есть версии за вчера, неделю назад и даже месяц;
- Всё сжато, зашифровано и лежит на отдельном VPS от CloudVPS.by;
- Не нужен Google Drive, rsync работает напрямую, быстро и без заморочек.
Настроить резервное копирование с помощью rsync, borg и cron — проще, чем кажется. Главное — один раз понять, как это работает, и вы уже никогда не останетесь без бэкапов. А с VPS от CloudVPS.by всё разворачивается быстро, стабильно, и не надо переплачивать за гигабайты в чужих облаках.
👉 Надоело бояться потерять данные? Разверни свой rsync-сервер — и спи спокойно.
Ценим тех, кто надолго
При оплате на год мы добавим ещё месяц.