Представь, что твой TrueNAS сервер — это сейф с бесценными данными: семейными фото, рабочими проектами, медиатекой. А теперь представь, что с ним что-то случилось. Жесткий диск вышел из строя, ошибка конфигурации, ransomware... Страшно? Не должно быть. Давай разберем, как построить неприступную систему резервного копирования для TrueNAS, которая защитит тебя от любых сценариев.
Философия бэкапа: 3-2-1 правило
Прежде чем лезть в настройки, усвой главное правило: 3 копии данных, на 2 разных типах носителей, 1 из которых в другом месте. Для TrueNAS это означает:
- Копия 1: Основные данные на пуле ZFS
- Копия 2: Локальная реплика на другой диск/пул (ZFS snapshots)
- Копия 3: Удаленная копия (другой TrueNAS, облако, офис)
Стратегия 1: ZFS Snapshots — основа всего
Снапшоты — это "точки восстановления" твоего пула. Они занимают место только для измененных данных (copy-on-write).
Создание снапшотов вручную и по расписанию
Через веб-интерфейс: Storage → Snapshots → Add. Но настоящая мощь — в автоматизации.
# Создание снапшота пула 'tank' с датой в названии
zfs snapshot tank@backup_$(date +%Y%m%d_%H%M%S)
# Просмотр всех снапшотов
zfs list -t snapshot
# Удаление старого снапшота
zfs destroy tank@backup_20240101_120000
Настройка периодических задач (Tasks → Cron Jobs):
- Ежечасно:
zfs snapshot -r tank/dataset@auto_%Y%m%d_%H - Ежедневно: Хранить 7 дней
- Еженедельно: Хранить 4 недели
- Ежемесячно: Хранить 12 месяцев
Стратегия 2: Репликация ZFS (локальная и удаленная)
Репликация — это синхронизация снапшотов между системами. Идеально для правила "в другом месте".
Настройка репликации между двумя TrueNAS серверами
Шаг 1: На целевой машине создаем пользователя для репликации:
# На сервере-приемнике (backup-server)
sudo useradd -m -s /bin/sh replication
sudo passwd replication
# Добавляем в группу wheel для sudo (или настрой sudo отдельно)
sudo usermod -aG wheel replication
Шаг 2: На основном сервере настраиваем SSH ключи:
# Генерируем ключ (без пароля для автоматизации)
ssh-keygen -t ed25519 -f ~/.ssh/replication_key
# Копируем на удаленный сервер
ssh-copy-id -i ~/.ssh/replication_key replication@backup-server.local
Шаг 3: Настройка задачи репликации через веб-интерфейс:
- Идем в Data Protection → Replication Tasks
- Source: твой локальный пул/датасет
- Destination: SSH connection к backup-server
- Schedule: ежедневно в 02:00
- Включи опцию "Delete stale snapshots on remote"
Стратегия 3: Rsync — классика для разнородных систем
Когда нужно бэкапить на не-ZFS систему или в облако, rsync — твой выбор.
Настройка rsync задачи в TrueNAS
# Пример rsync команды с ключами для надежного бэкапа
rsync -avz --delete --progress \
--exclude='*.tmp' \
--exclude='.Trash-*' \
-e "ssh -i /root/.ssh/backup_key" \
/mnt/tank/important_data/ \
backup-user@remote-server:/backup/truenas/
Настройка через интерфейс (Tasks → Rsync Tasks):
| Параметр | Значение | Описание |
|---|---|---|
| Path | /mnt/tank/documents | Что бэкапим |
| Remote Host | backup.server.com | Куда бэкапим |
| Remote Module Name | truenas_backup | Модуль rsync на сервере |
| Schedule | Daily at 1:00 | Когда запускать |
Стратегия 4: Облачный бэкап (S3, Backblaze, Wasabi)
Идеально для выполнения правила "1 копия в другом месте". TrueNAS имеет встроенную поддержку S3-совместимых хранилищ.
Настройка облачного бэкапа через rclone
Установи rclone через TrueNAS CLI:
# Установка rclone (если нет в системе)
pkg install rclone
# Конфигурация (интерактивно)
rclone config
# Создание задачи синхронизации
rclone sync -v \
/mnt/tank/important \
backblaze:bucket-name/truenas-backup \
--exclude="*.tmp" \
--transfers=4 \
--checkers=8
Или через Cloud Sync Tasks в веб-интерфейсе:
- Выбираешь провайдера (Backblaze B2, AWS S3, Google Cloud и т.д.)
- Вводишь credentials (ключи доступа)
- Настраиваешь расписание и фильтры
- Выбираешь режим: sync (двусторонний) или copy (только загрузка)
Восстановление данных: когда пришла беда
Бэкап без восстановления — просто архив. Давай разберем основные сценарии.
Восстановление из ZFS snapshot
# Просмотр доступных снапшотов
zfs list -t snapshot -r tank/dataset
# Восстановление всего датасета к состоянию снапшота
zfs rollback tank/dataset@backup_20240101_120000
# Клонирование снапшота в новый датасет (без перезаписи оригинала)
zfs clone tank/dataset@backup_20240101_120000 tank/restored_dataset
Восстановление отдельных файлов из снапшота
Снапшоты монтируются в скрытую директорию .zfs/snapshot/:
# Переходим в директорию снапшотов
cd /mnt/tank/dataset/.zfs/snapshot/
# Смотрим список снапшотов
ls -la
# Копируем нужный файл из снапшота
cp backup_20240101_120000/documents/important.docx /mnt/tank/restored/
Полное восстановление из реплики
Если основной сервер "умер", поднимаем данные с реплики:
# На резервном сервере делаем последний снапшот реплики доступным
zfs promote backup-pool/replicated-dataset
# Теперь его можно монтировать и использовать
zfs mount backup-pool/replicated-dataset
# Или реплицируем обратно на восстановленный основной сервер
zfs send -R backup-pool/replicated-dataset@latest | \
ssh main-server "zfs receive -Fv main-pool/dataset"
Бэкап конфигурации TrueNAS
Данные — это важно, но без конфигурации твой NAS — просто коробка с дисками.
# Ручной экспорт конфигурации через веб-интерфейс:
# System → General → Save Config
# Автоматический бэкап конфига по SSH
scp /data/freenas-v1.db \
backup-user@remote-server:/backup/truenas-config/\
freenas-$(date +%Y%m%d).db
# Бэкап через API (TrueNAS SCALE)
curl -X POST -H "Authorization: Bearer API_KEY" \
https://truenas.local/api/v2.0/system/config/save/ \
-o /mnt/tank/backup/config-$(date +%Y%m%d).tar
Мониторинг и автоматические уведомления
Бэкап, который не проверяется, — мертвый бэкап. Настрой алерты:
# Скрипт проверки последнего бэкапа
LAST_BACKUP=$(zfs list -t snapshot -o name -s creation | \
grep "@auto_" | tail -1 | cut -d'@' -f2)
BACKUP_AGE=$(date -d "${LAST_BACKUP//_/ }" +%s)
NOW=$(date +%s)
AGE_HOURS=$(( (NOW - BACKUP_AGE) / 3600 ))
if [ $AGE_HOURS -gt 24 ]; then
echo "WARNING: Last backup is $AGE_HOURS hours old!" | \
mail -s "TrueNAS Backup Alert" admin@example.com
fi
Настрой в System → Alert Services:
- Email уведомления при ошибках задач
- Telegram/Slack через webhooks
- Проверку свободного места в целевых хранилищах
Чеклист надежного бэкапа TrueNAS
- ✅ ZFS snapshots с разными интервалами хранения
- ✅ Локальная реплика на отдельные диски
- ✅ Удаленная реплика на другой TrueNAS (офис/другой город)
- ✅ Облачный бэкап критичных данных (Backblaze B2/S3)
- ✅ Регулярный бэкап конфигурации системы
- ✅ Ежеквартальные тесты восстановления
- ✅ Мониторинг и уведомления о проблемах
- ✅ Документация процедуры восстановления (хранится отдельно!)
Помни: стоимость восстановления данных всегда превышает стоимость их резервного копирования. Настроив многоуровневую систему бэкапов на TrueNAS, ты спишь спокойно, зная, что твои данные защищены от любых неожиданностей. Начни с малого — настрой снапшоты сегодня, добавь репликацию завтра, подключи облако на неделе. Главное — начать.