Если ты хоть раз терял данные — знаешь, это боль. И ладно бы какие-то временные файлы, но когда это база клиентов, документы, годовая отчётность или даже сайт, который висел в топе — всё, здравствуй, паника.
Я через это прошла. И в итоге пришла к простому, но надёжному решению: 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— сжатие;-e— указываем, что через SSH и нестандартный порт.
Можно добавить --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 — это синхронизация, но он не архивирует. Если нужно хранить копии по дням/неделям и не дублировать одно и то же — используем Borg.
Устанавливаем:
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-сервер — и спи спокойно.