Настройка бекапа вашей 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"
Теперь у вас есть надежная система бэкапов, которая защитит вас от большинства катастроф. В случае сбоя вы сможете быстро восстановить всю систему целиком, минимизируя простои и стресс.