Налаштування rsync та rsnapshot для інкрементального бекапу

Втрата даних через випадкове видалення або збій — це ризик, який може зупинити роботу бізнесу. Ми налаштовуємо інкрементальне резервне копіювання на базі rsync та rsnapshot, забезпечуючи надійне зберігання знімків з дедуплікацією через hardlink. Наша команда реалізує проєкт під ключ — від аудиту інфраструктури до впровадження та подальшої підтримки, щоб ви могли відновити файли в будь-який момент без зайвих витрат.
Часті запитання

Бекапи — це не копіювання, а гарантія відновлення

Припустимо, ваш колега випадково видалив конфіг nginx, а останній повний бекап був тиждень тому. З rsnapshot відновлення займе одну команду cp — файл доступний прямо у знімку без архівації. Ми налаштовуємо такі системи для проектів від 10 до 500 серверів, і rsnapshot залишається стандартом для bare-metal та файлових машин під Linux завдяки дедуплікації через hardlinks: економія дискового простору сягає 90% порівняно з повними копіями. Наш досвід — 5 років конфігурації rsync+rsnapshot. Ми виконали понад 50 проектів з налаштування бекапів. Гарантуємо, що ваші дані будуть доступні на будь-якому знімку без спеціального ПЗ, а кожен бекап ми тестуємо за вашим чек-листом. Середній час відновлення — 1 хвилина. Отримайте консультацію з налаштування rsnapshot з гарантією відновлення.

Які проблеми вирішує rsnapshot

  • Відновлення випадково видаленого файлу за одну команду cp.
  • Зберігання 30+ знімків при мінімальному витраті місця (hardlinks).
  • Прозорий моніторинг: ls показує всі знімки як звичайні папки.
  • Незалежність від версій: rsync є в будь-якій системі.

Як налаштувати rsnapshot для максимальної продуктивності

Щоб отримати вигоду від hardlinks, важливо правильно вибрати файлову систему для snapshot_root. Ми використовуємо ext4 з опцією noatime — це виключає зайві записи при читанні та підвищує швидкість ротації на 20%. Перевірте, що розділ змонтовано з цією опцією:

# /etc/fstab /dev/sdb1 /mnt/backups ext4 defaults,noatime 0 2 

Налаштування конфігурації /etc/rsnapshot.conf вимагає уваги до роздільників — тільки табуляція. Приклад базового файлу:

config_version 1.2
snapshot_root /mnt/backups/rsnapshot/
cmd_rsync /usr/bin/rsync
retain hourly 6
retain daily 7
retain weekly 4
retain monthly 6
verbose 2
logfile /var/log/rsnapshot.log
rsync_short_args -aHz
rsync_long_args --delete --numeric-ids --relative --delete-excluded
ssh_args -i /root/.ssh/backup_ed25519 -o StrictHostKeyChecking=no
exclude .cache/
exclude node_modules/
exclude *.tmp
backup root@web-server-01:/etc/ web-server-01/
backup root@web-server-01:/var/www/ web-server-01/
backup root@db-server-01:/etc/ db-server-01/
backup root@db-server-01:/var/lib/postgresql/ db-server-01/

Покрокове налаштування rsnapshot

  1. Встановіть пакет: apt install rsnapshot або yum install rsnapshot.
  2. Відредагуйте /etc/rsnapshot.conf під свій сценарій (джерела, розклад).
  3. Протестуйте конфігурацію: rsnapshot -t daily.
  4. Запустіть перший бекап: rsnapshot hourly. Перевірте лог на наявність помилок.

Після цього налаштуйте cron для автоматичного запуску за розкладом.

Чому rsnapshot у 10 разів ефективніший за звичайний rsync

Звичайний rsync з ротацією копіює всі файли щоразу — це займає час і місце. rsnapshot з hardlinks оновлює лише змінені блоки, а інші лінкує. Порівняйте:

Метод Час повної ротації Витрата місця на 30 знімків Відновлення без розпакування
rsync + архіви 1 година (перезапис) 30× об'єм даних Ні (потрібен tar)
rsnapshot 5 хвилин (інкремент) 1.1× об'єм (hardlinks) Так, прямий cp

Розклад через cron

Частота знімків підбирається під ваші RPO. Наприклад, для типового проекту:

0 */4 * * * root /usr/bin/rsnapshot hourly
30 3 * * * root /usr/bin/rsnapshot daily
0 3 * * 1 root /usr/bin/rsnapshot weekly
30 2 1 * * root /usr/bin/rsnapshot monthly

rsnapshot при виконанні daily перейменовує старі знімки, робить hardlink-копію останнього hourly.0 і запускає rsync для оновлення. Результат у /mnt/backups/rsnapshot/ виглядає як папки з датами.

Що таке hardlinks і чому вони економлять 90% місця

Зазначимо: коли файл не змінився, rsnapshot не копіює його, а створює жорстке посилання на попередній знімок. Ви бачите повноцінні копії, але місце зайнято лише один раз. У тестах на статичних конфігах економія сягає 90%. Це в десятки разів ефективніше за архівацію стисненням. Детальніше про hardlinks.

Простий моніторинг свіжості бекапів

Достатньо однієї команди, щоб перевірити, чи не застарів останній знімок:

LAST=$(stat -c %Y /mnt/backups/rsnapshot/daily.0/)
NOW=$(date +%s)
AGE=$(( (NOW - LAST) / 3600 ))
[ "$AGE" -gt 25 ] && echo "rsnapshot daily stale: ${AGE}h"

Ми інтегруємо цю перевірку в Prometheus і налаштовуємо алерт, якщо бекап не пройшов. Повний runbook з командами відновлення — частина нашої документації.

Обмеження rsnapshot

Жорсткі посилання працюють тільки в межах однієї файлової системи. Якщо snapshot_root — це NFS-mount, частина операцій з hardlinks некоректна. Для хмарного зберігання ми додаємо rclone з шифруванням. Для баз даних прямий rsync postgresql/data без pre-freeze ризикований — ми завжди попередньо робимо pg_dump або pg_basebackup в окрему директорію, а rsnapshot забирає її.

Що входить у налаштування rsnapshot під ключ

Чек-лист перевірки бекапу
  • [ ] Перевірено лог rsnapshot на наявність помилок
  • [ ] Останній знімок не старше 4 годин
  • [ ] Розмір інкрементного знімка < 500 МБ (нормально для конфігів)
  • [ ] Файл зі знімка відновлюється командою cp
  • [ ] Алерт в Prometheus спрацьовує при відсутності бекапу > 6 годин
Компонент Опис
Аудит джерел бекапу Визначаємо критичні директорії та бази даних
Розробка схеми ротації hourly/daily/weekly/monthly під ваш RTO/RPO
Конфігурація rsnapshot Файли, exclude, SSH-ключі
Налаштування моніторингу Prometheus + alert якщо бекап не пройшов
Документація Runbook з командами відновлення
Навчання команди Показуємо, як знайти файл з будь-якого знімка

Строки та вартість

Базова налаштування одного сервера займає 1–2 дні. Вартість розраховується індивідуально залежно від кількості джерел та складності інфраструктури. Зв'яжіться з нами — ми оцінимо ваш проект і запропонуємо оптимальне рішення. Отримайте консультацію з налаштування rsnapshot з гарантією відновлення. Замовте налаштування прямо зараз.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142