# Резервное копирование и восстановление

Rediacc может создавать резервные копии зашифрованных репозиториев во внешние хранилища и восстанавливать их на той же или другой машине. Резервные копии зашифрованы, для восстановления требуются учетные данные LUKS репозитория.

## Настройка хранилища

Перед отправкой резервных копий зарегистрируйте провайдера хранилища. Rediacc поддерживает любое rclone-совместимое хранилище: S3, B2, Google Drive и многие другие.

### Импорт из rclone

Если у вас уже настроен удаленный rclone-ресурс:

```bash
rdc config storage import --file rclone.conf
```

Эта команда импортирует конфигурации хранилища из файла конфигурации rclone в текущую конфигурацию. Поддерживаемые типы: S3, B2, Google Drive, OneDrive, Mega, Dropbox, Box, Azure Blob и Swift.

### Просмотр хранилищ

```bash
rdc config storage list
```

## Отправка резервной копии

Отправьте резервную копию репозитория во внешнее хранилище:

```bash
rdc repo push --name my-app -m server-1 --to my-storage
```

| Опция | Описание |
|-------|----------|
| `--to <storage>` | Целевое хранилище |
| `--to-machine <machine>` | Целевая машина для копирования между машинами |
| `--dest <filename>` | Пользовательское имя файла назначения |
| `--checkpoint` | Создать контрольную точку CRIU перед отправкой (для контейнеров с меткой `rediacc.checkpoint=true`). Целевая машина автоматически восстанавливает при `repo up` |
| `--force` | Перезаписать существующую резервную копию |
| `--tag <tag>` | Пометить резервную копию тегом |
| `-w, --watch` | Отслеживать прогресс операции |
| `--debug` | Включить подробный вывод |
| `--skip-router-restart` | Skip restarting the route server after the operation |

## Получение / Восстановление резервной копии

Получите резервную копию репозитория из внешнего хранилища:

```bash
rdc repo pull --name my-app -m server-1 --from my-storage
```

| Опция | Описание |
|-------|----------|
| `--from <storage>` | Исходное хранилище |
| `--from-machine <machine>` | Исходная машина для восстановления между машинами |
| `--force` | Перезаписать существующую локальную резервную копию |
| `-w, --watch` | Отслеживать прогресс операции |
| `--debug` | Включить подробный вывод |
| `--skip-router-restart` | Skip restarting the route server after the operation |

## Список резервных копий

Просмотрите доступные резервные копии в хранилище:

```bash
rdc repo backup list --from my-storage -m server-1
```

## Массовая синхронизация

Отправьте или получите все репозитории одновременно:

### Отправка всех в хранилище

```bash
rdc repo push --to my-storage -m server-1
```

### Получение всех из хранилища

```bash
rdc repo pull --from my-storage -m server-1
```

| Опция | Описание |
|-------|----------|
| `--to <storage>` | Целевое хранилище (направление отправки) |
| `--from <storage>` | Исходное хранилище (направление получения) |
| `--repo <name>` | Синхронизировать определенные репозитории (можно указывать несколько раз) |
| `--override` | Перезаписать существующие резервные копии |
| `--debug` | Включить подробный вывод |
| `--skip-router-restart` | Skip restarting the route server after the operation |

## Запланированное резервное копирование

Автоматизируйте резервное копирование с помощью cron-расписания, которое запускается как systemd-таймер на удаленной машине.

### Настройка расписания

```bash
rdc config backup-strategy set --destination my-storage --cron "0 2 * * *" --enable
```

Вы можете настроить несколько хранилищ с разными расписаниями:

```bash
rdc config backup-strategy set --destination my-s3 --cron "0 2 * * *" --enable
rdc config backup-strategy set --destination azure-backup --cron "0 6 * * *" --enable
```

| Опция | Описание |
|-------|----------|
| `--destination <storage>` | Хранилище для резервных копий (настраивается для каждого хранилища) |
| `--cron <expression>` | Cron-выражение (например, `"0 2 * * *"` для ежедневного запуска в 2 часа ночи) |
| `--enable` | Включить расписание |
| `--disable` | Отключить расписание |

### Применение расписания на машине

Разверните конфигурацию расписания на машине как systemd-таймер:

```bash
rdc machine backup schedule -m server-1
```

### Просмотр расписания

```bash
rdc config backup-strategy show
```

## Обзор хранилища

Просмотрите содержимое хранилища:

```bash
rdc storage browse --name my-storage
```

## Лучшие практики

- **Настройте ежедневное резервное копирование** хотя бы в одно хранилище
- **Периодически проверяйте восстановление** для подтверждения целостности резервных копий
- **Используйте несколько провайдеров хранилищ** для критически важных данных (например, S3 + B2)
- **Храните учетные данные в безопасности**, резервные копии зашифрованы, но для восстановления требуются учетные данные LUKS