Бекапи — це не копіювання, а гарантія відновлення
Припустимо, ваш колега випадково видалив конфіг 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
- Встановіть пакет:
apt install rsnapshotабоyum install rsnapshot. - Відредагуйте
/etc/rsnapshot.confпід свій сценарій (джерела, розклад). - Протестуйте конфігурацію:
rsnapshot -t daily. - Запустіть перший бекап:
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 monthlyrsnapshot при виконанні 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 з гарантією відновлення. Замовте налаштування прямо зараз.







