Как стать автором
Обновить

Настройка бекапа вашей Linux системы с помощью rsync: просто и со вкусом

Шаг 1: Подготовка сервера для бэкапов

Лайфхак: В Hostkey VPS с 4ТБ обойдется примерно в 2600₽/месяц

Настройка SSH-ключа для безопасного доступа:

# Создаем SSH-ключ
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_backup

# Копируем на сервер
ssh-copy-id -i ~/.ssh/id_rsa_backup.pub user@backup-server

# Создаем директории на сервере
mkdir -p /root/backup-{1,2,3}

Шаг 2: Настройка автоматических бэкапов

Добавляем три задания в crontab для ротации бэкапов по дням недели:

crontab -e

Вставляем три задания (замените SSH_USER, SSH_HOST и SSH_KEY_PATH):

# Бэкап в директорию backup-1 (воскресенье, среда, суббота)
0 */2 * * 0,3,6
touch /tmp/os-backup.lock
&& /usr/bin/timeout 7200 /usr/bin/flock --close -n /tmp/os-backup.lock
/bin/bash -c "rsync -aAXHv --delete -P --rsync-path=\"sudo rsync\" 
-e \"ssh -o StrictHostKeyChecking=no -i SSH_KEY_PATH\" 
--exclude='/dev/*' 
--exclude='/proc/*' 
--exclude='/sys/*' 
--exclude='/tmp/*' 
--exclude='/run/*' 
--exclude='/mnt/*' 
--exclude='/media/*' 
--exclude='/lost+found/' 
/* SSH_USER@SSH_HOST:/root/backup-1 
&> /var/log/os-backup 
|| sudo -u $(id -nu 1000) DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send \"OS BACKUP FAILED\""

# Бэкап в директорию backup-2 (понедельник, четверг)
0 */2 * * 1,4 
touch /tmp/os-backup.lock 
&& /usr/bin/timeout 7200 /usr/bin/flock --close -n /tmp/os-backup.lock 
/bin/bash -c "rsync -aAXHv --delete -P --rsync-path=\"sudo rsync\" 
-e \"ssh -o StrictHostKeyChecking=no -i SSH_KEY_PATH\" 
--exclude='/dev/*' 
--exclude='/proc/*' 
--exclude='/sys/*' 
--exclude='/tmp/*' 
--exclude='/run/*' 
--exclude='/mnt/*' 
--exclude='/media/*' 
--exclude='/lost+found/' 
/* SSH_USER@SSH_HOST:/root/backup-2 
&> /var/log/os-backup 
|| sudo -u $(id -nu 1000) DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send \"OS BACKUP FAILED\""

# Бэкап в директорию backup-3 (вторник, пятница)
0 */2 * * 2,5 
touch /tmp/os-backup.lock 
&& /usr/bin/timeout 7200 /usr/bin/flock --close -n /tmp/os-backup.lock 
/bin/bash -c "rsync -aAXHv --delete -P --rsync-path=\"sudo rsync\" 
-e \"ssh -o StrictHostKeyChecking=no -i SSH_KEY_PATH\" 
--exclude='/dev/*' 
--exclude='/proc/*' 
--exclude='/sys/*' 
--exclude='/tmp/*' 
--exclude='/run/*' 
--exclude='/mnt/*' 
--exclude='/media/*' 
--exclude='/lost+found/' 
/* SSH_USER@SSH_HOST:/root/backup-3 
&> /var/log/os-backup 
|| sudo -u $(id -nu 1000) DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send \"OS BACKUP FAILED\""

Что делает наш скрипт?

  • Умное расписание: Каждый день недели система копирует данные в одну из трех директорий

  • Защита от блокировок: Предотвращает запуск нескольких копий скрипта одновременно

  • Безопасность: Использует SSH-ключи вместо паролей

  • Исключения: Пропускает системные директории, которые не нужно бэкапить

  • Мониторинг: Отправляет уведомление в шторку уведомлений, если что-то пошло не так

ОБЯЗАТЕЛЬНО сохраните SSH-ключ в надежном месте! Без него восстановление данных будет невозможно.

Рекомендации:

  • Копия на USB-флешке (хранить отдельно от компьютера)

  • Распечатка на бумаге в сейфе (для параноиков)Зашифрованная копия в менеджере паролей

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

Регулярно проверяйте состояние ваших бэкапов:

ssh -i SSH_KEY_PATH SSH_USER@SSH_HOST "ls -la /root/backup-1"

Теперь у вас есть надежная система бэкапов, которая защитит вас от большинства катастроф. В случае сбоя вы сможете быстро восстановить всю систему целиком, минимизируя простои и стресс.

Теги:
+1
Комментарии0

Публикации

Работа

Ближайшие события