Как настроить отправку резервной копии с одного устройства на другое?

Исходные данные: <br/> У меня есть "RPI 4", на котором установлена операционная система "RPI OS LITE". <br/> <br/> Вопрос: Я планирую создавать бэкапы ОС (RPI OS LITE) через определённый интервал времени и отправлять их на свой ПК. <br/> При этом, если в момент попытки отправки нет соединения с ПК, бэкап должен оставаться в ожидании N времени до следующей попытки отправки. <br/> <br/> Существуют ли программы, способные автоматизировать этот процесс? Или мне придется написать собственное решение?
  • 5 января 2025 г. 23:24
Ответы на вопрос 2
Для автоматизации создания и отправки резервных копий с Raspberry Pi (RPI 4) на ваш ПК можно использовать комбинацию стандартных утилит Unix/Linux и небольшие скрипты. Вот общее направление, как это сделать:

### Установка необходимых утилит

1. **rsync**: отличная утилита для синхронизации файлов и создания резервных копий. Она позволяет быстро передавать только измененные данные.
2. **cron**: для автоматического запуска скриптов через заданные интервалы времени.
3. **ssh**: для безопасной передачи данных между RPI и ПК.

### Настройка SSH

1. Убедитесь, что SSH-сервер установлен и запущен на вашем ПК. 
2. На RPI выполните команду для генерации ключей SSH:

   ```bash
   ssh-keygen
   ```

3. Скопируйте публичный ключ на ваш ПК, чтобы избежать ввода пароля при каждой отправке резервной копии:

   ```bash
   ssh-copy-id user@ip_вашего_ПК
   ```

### Написание скрипта для создания и отправки резервных копий

Создайте скрипт, который будет делать резервную копию, а затем отправлять ее на ваш ПК.

```bash
#!/bin/bash

# Параметры
BACKUP_DIR="/path/to/your/backup"
REMOTE_USER="user"
REMOTE_HOST="ip_вашего_ПК"
REMOTE_DIR="/path/to/remote/backup"
FILENAME="backup_$(date +%Y%m%d_%H%M%S).tar.gz"

# Создание резервной копии
tar -czf "${BACKUP_DIR}/${FILENAME}" /path/to/data/to/backup

# Попытка отправки резервной копии
ATTEMPTS=0
MAX_ATTEMPTS=5
until scp "${BACKUP_DIR}/${FILENAME}" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}"; do
    if [ $ATTEMPTS -ge $MAX_ATTEMPTS ]; then
        echo "Не удалось отправить резервную копию после $ATTEMPTS попыток. Прерывание операции."
        exit 1
    fi
    echo "Ошибка отправки. Попытка $((ATTEMPTS + 1)) через 30 секунд..."
    sleep 30
    ATTEMPTS=$((ATTEMPTS + 1))
done

echo "Резервная копия успешно отправлена."
```

### Настройка cron для автоматизации

1. Откройте файл crontab для редактирования:

   ```bash
   crontab -e
   ```

2. Добавьте строку, чтобы запускать скрипт в нужное время (например, каждый день в 2:00):

   ```bash
   0 2 * * * /path/to/your/backup_script.sh
   ```

### Дополнительные советы

- Убедитесь, что у вас достаточно места на обоих устройствах для хранения резервных копий.
- Рассмотрите возможность использования `rsnapshot` или `borgbackup`, если вы хотите более сложное решение для управления резервными копиями.
- Проверьте созданные резервные копии на регулярной основе, чтобы удостовериться, что они работают корректно.

Следуя этим шагам, вы сможете автоматизировать процесс резервного копирования и передачи данных с RPI на ваш ПК.
Выглядит как кандидат на запуск с ПК, а не с "RPI 4". 

В простейшем случае это просто какой-нибудь rsync в планировщике с удалением исходного файла после скачивания.
Похожие вопросы