opened image

Rsnapshot на Ubuntu: практичный гайд по инкрементным бэкапам

 

Что такое rsnapshot и почему его любят админы

rsnapshot — это «обёртка» над rsync, которая делает снимки файловой системы по расписанию. Фишка в том, что старые снимки используют hard link-и: если файл не менялся, он не копируется заново и почти не занимает место.

 

За 20–30 минут настроить регулярные инкрементные бэкапы с понятной ротацией (daily/weekly/monthly), чтобы восстановление файлов было «как из папки».

 

В результате:

  • бэкапы получаются инкрементными и экономными по диску;

  • структура простая: daily.0, daily.1 … — это обычные каталоги;

  • восстановление = обычное копирование файла назад.

 

 

Предварительные требования (чек‑лист)

 

Перед настройкой проверь:

  • есть куда складывать бэкапы: вторая диск/раздел/хранилище — лучше, чем тот же системный диск;

  • файловая система бэкап‑раздела поддерживает hard links (ext4/xfs обычно ок);

  • если бэкапишь удалённую машину — нужен доступ по SSH без пароля (ключи).

Рекомендация админа: держать бэкапы на отдельном диске/томе (например, /backup), чтобы сбой системы не унёс и данные, и бэкап вместе.

 

 

 

Установка

 

На Ubuntu всё ставится из репозитория.

sudo apt-get update
sudo apt-get install rsnapshot

 

Скриншот №1 (предложение): вывод установки apt-get install rsnapshot (видно, что пакет установлен).

 

 

Понимаем логику каталогов снимков

По умолчанию rsnapshot кладёт всё в:

  • snapshot_root /var/cache/rsnapshot/

А внутри будут появляться папки вида:

  • daily.0 — самый свежий дневной снимок

  • daily.1 — предыдущий и т.д.

Важно: rsnapshot не «архивирует» данные. Это папки и файлы.

 

 

Настройка /etc/rsnapshot.conf

 

Сначала сделай резервную копию конфига:

sudo cp /etc/rsnapshot.conf /etc/rsnapshot.conf.bak

Открой конфиг:

sudo nano /etc/rsnapshot.conf

Скриншот №2 (предложение): открыт файл /etc/rsnapshot.conf в редакторе, видны ключевые строки (snapshot_root, retain, backup).

 

Где хранить снимки (snapshot_root)

Найди строку snapshot_root и при желании вынеси на отдельный том.

Пример (если у тебя есть смонтированный раздел /backup):

snapshot_root    /backup/rsnapshot/

 

Совет: проверь, что каталог существует и права адекватные:

sudo mkdir -p /backup/rsnapshot
sudo chown root:root /backup/rsnapshot
sudo chmod 755 /backup/rsnapshot

 

Сколько хранить (retain)

В секции BACKUP LEVELS / INTERVALS задаём «глубину» истории.

Пример умеренной ротации:

retain  daily     7
retain  weekly    4
retain  monthly   6

Как это читать:

  • 7 дневных точек восстановления (примерно неделя назад)

  • 4 недельных (примерно месяц)

  • 6 месячных (полгода)

4.3) Что бэкапить локально (backup)

Если нужно сохранить текущую машину — добавь каталоги:

backup  /etc/        localhost/
backup  /home/       localhost/
backup  /usr/local/  localhost/

Практическая ремарка:

  • /etc — конфиги

  • /home — данные пользователей

  • /usr/local — «ручные» установки

Не бэкапь бездумно всё подряд. Например, /proc, /sys, /dev, /run обычно не нужны.

 

Удалённые бэкапы по SSH (опционально)

Если бэкапишь сервер example.com, rsnapshot может тянуть каталоги по SSH:

backup  root@example.com:/etc/   example.com/   exclude=mtab,exclude=core
backup  root@example.com:/home/  example.com/   +rsync_long_args=--bwlimit=16,exclude=core

Если SSH порт не 22:

ssh_args  -p 22222

 

Как сделать доступ по ключу (без пароля):

  1. На сервере, где крутится rsnapshot (бэкап‑сервер):

ssh-keygen -t ed25519 -a 64
  1. Передай публичный ключ на целевую машину:

ssh-copy-id -i ~/.ssh/id_ed25519.pub root@example.com
  1. Проверь вход без пароля:

ssh root@example.com 'hostname; whoami'

 

Скриншот №3 (предложение): успешный ssh root@example.com 'hostname; whoami' без запроса пароля.

Админ‑совет по безопасности: лучше создавать отдельного пользователя для бэкапов (например backup), ограничивать ему доступ и разрешать только нужные каталоги.

 

 

Проверяем конфиг и делаем тестовый прогон

 

Проверка синтаксиса

sudo rsnapshot configtest

Ожидаем что-то вроде: Syntax OK.

Тест без выполнения (dry-run)

sudo rsnapshot -t daily

Это покажет, что будет сделано, но не будет реально копировать.

Первый реальный запуск

sudo rsnapshot daily

После этого проверь, что появились каталоги снимков:

sudo ls -la /var/cache/rsnapshot
# или
sudo ls -la /backup/rsnapshot

Скриншот №4 (предложение): вывод rsnapshot configtest + rsnapshot -t daily (можно два скрина или один, если помещается).

Скриншот №5 (дополнительно, если хочешь): список каталогов daily.0, daily.1… после первого запуска.

 

 

Расписание: включаем автоматический запуск (cron)

 

На Ubuntu rsnapshot обычно поставляется с готовым cron‑файлом:

  • /etc/cron.d/rsnapshot

Открой его:

sudo nano /etc/cron.d/rsnapshot

Там часто есть закомментированные примеры. Можно включить примерно так:

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

Это означает:

  • daily — каждый день в 04:00

  • weekly — каждый понедельник в 03:00

  • monthly — 1-го числа в 02:00

Скриншот №6 (предложение): файл /etc/cron.d/rsnapshot с включёнными строками расписания.

 

 

Как быстро восстановить файл (самая важная часть!)

 

Допустим, тебе нужно вернуть файл notes.txt из вчерашнего снимка.

  1. Найди нужную дату/снимок:

  • самый свежий — daily.0

  • предыдущий — daily.1

  1. Скопируй файл обратно:

sudo cp -a /backup/rsnapshot/daily.1/localhost/home/user/notes.txt /home/user/notes.txt

Если бэкап лежит в /var/cache/rsnapshot, поправь путь.

Админ‑лайфхак: можно восстанавливать не только файл, но и папку целиком.

 

 

Практические советы, чтобы бэкап не подвёл

 

Исключения (exclude) — экономим время и место

Добавляй исключения для «мусора» и временных файлов. Примеры:

  • кеши

  • временные каталоги

  • большие каталоги, которые проще восстановить из других источников

Проверяй права и доступ

Частая причина провалов:

  • rsnapshot не может прочитать каталог (права)

  • нет доступа по SSH (ключи/порт/фаервол)

Следи за логами

Если бэкап «молча не работает», смотри системные логи cron и сообщения rsnapshot.

Полезные команды:

grep -i rsnapshot /var/log/syslog | tail -n 50

Делай контрольный тест восстановления

Бэкап без теста восстановления — это иллюзия безопасности. Хотя бы раз:

  • восстанови пару файлов

  • убедись, что всё читается

 

 

Мини‑шаблон “правильной” конфигурации для старта

 

Ниже — безопасная отправная точка (адаптируй под себя):

snapshot_root    /backup/rsnapshot/

retain  daily     7
retain  weekly    4
retain  monthly   6

backup  /etc/        localhost/
backup  /home/       localhost/
backup  /usr/local/  localhost/

 

 

Частые ошибки новичков

  • Хранят бэкапы на том же диске, что и данные (при падении диска — конец всему).

  • Делают бэкап «всего подряд», включая /proc и /sys.

  • Не проверяют configtest и сразу ставят cron.

  • Никогда не проверяют восстановление.

 

 

Итог

 

rsnapshot — отличный вариант, когда нужен простой, прозрачный и экономный бэкап «папками», без сложных серверов и агентов.