Бэкап TrueNAS: пошаговая настройка, rsync, ZFS snapshots, облако | AdminWiki

Полное руководство по бэкапу TrueNAS: стратегии, настройка и восстановление

01 февраля 2026 7 мин. чтения #nas #rsync #snapshots #truenas #zfs #бэкап #восстановление данных #резервное копирование #репликация

Представь, что твой TrueNAS сервер — это сейф с бесценными данными: семейными фото, рабочими проектами, медиатекой. А теперь представь, что с ним что-то случилось. Жесткий диск вышел из строя, ошибка конфигурации, ransomware... Страшно? Не должно быть. Давай разберем, как построить неприступную систему резервного копирования для TrueNAS, которая защитит тебя от любых сценариев.

Философия бэкапа: 3-2-1 правило

Прежде чем лезть в настройки, усвой главное правило: 3 копии данных, на 2 разных типах носителей, 1 из которых в другом месте. Для TrueNAS это означает:

  • Копия 1: Основные данные на пуле ZFS
  • Копия 2: Локальная реплика на другой диск/пул (ZFS snapshots)
  • Копия 3: Удаленная копия (другой TrueNAS, облако, офис)
ZFS — твой главный союзник. Его снапшоты (моментальные снимки) и репликация — это не просто бэкап, это полноценная версионность с минимальными накладными расходами.

Стратегия 1: ZFS Snapshots — основа всего

Снапшоты — это "точки восстановления" твоего пула. Они занимают место только для измененных данных (copy-on-write).

Создание снапшотов вручную и по расписанию

Через веб-интерфейс: Storage → Snapshots → Add. Но настоящая мощь — в автоматизации.

bash
# Создание снапшота пула '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: На целевой машине создаем пользователя для репликации:

bash
# На сервере-приемнике (backup-server)
sudo useradd -m -s /bin/sh replication
sudo passwd replication
# Добавляем в группу wheel для sudo (или настрой sudo отдельно)
sudo usermod -aG wheel replication

Шаг 2: На основном сервере настраиваем SSH ключи:

bash
# Генерируем ключ (без пароля для автоматизации)
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

config
# Пример 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:

bash
# Установка 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

bash
# Просмотр доступных снапшотов
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/:

bash
# Переходим в директорию снапшотов
cd /mnt/tank/dataset/.zfs/snapshot/

# Смотрим список снапшотов
ls -la

# Копируем нужный файл из снапшота
cp backup_20240101_120000/documents/important.docx /mnt/tank/restored/

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

Если основной сервер "умер", поднимаем данные с реплики:

bash
# На резервном сервере делаем последний снапшот реплики доступным
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 — просто коробка с дисками.

bash
# Ручной экспорт конфигурации через веб-интерфейс:
# 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
Конфигурационный файл содержит пароли в зашифрованном виде, но все равно храни его в безопасном месте. Регулярно обновляй этот бэкап после любых изменений в системе.

Мониторинг и автоматические уведомления

Бэкап, который не проверяется, — мертвый бэкап. Настрой алерты:

bash
# Скрипт проверки последнего бэкапа
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, ты спишь спокойно, зная, что твои данные защищены от любых неожиданностей. Начни с малого — настрой снапшоты сегодня, добавь репликацию завтра, подключи облако на неделе. Главное — начать.

Поделиться:
Сохранить гайд? В закладки браузера