Представь, что твой TrueNAS сервер — это цифровая крепость с ценными данными. Но даже у крепостей бывают слабые места. Внезапный отказ диска, человеческая ошибка или ransomware-атака могут уничтожить годы работы. Давай разберем, как построить надежную систему резервного копирования, которая защитит твои данные от любых угроз.
Почему стандартного копирования недостаточно?
TrueNAS использует ZFS — файловую систему с встроенными снимками (snapshots) и контрольными суммами. Но снимки — это не бэкапы! Они хранятся на том же пуле и не защищают от физического повреждения оборудования или полного выхода системы из строя.
Стратегия 3-2-1 для TrueNAS
Золотой стандарт в мире бэкапов:
- 3 копии данных (оригинал + 2 бэкапа)
- 2 разных типа носителей (HDD + облако или лента)
- 1 копия вне площадки (offsite backup)
Методы резервного копирования в TrueNAS
1. Репликация ZFS (ZFS Replication)
Самый эффективный метод для TrueNAS. Создает точные копии датасетов с сохранением всех свойств ZFS: снимков, компрессии, шифрования.
# Ручная репликация через CLI
zfs snapshot tank/data@backup_$(date +%Y%m%d)
zfs send tank/data@backup_20240115 | ssh backup-server "zfs recv backup-pool/data"
Настройка периодической репликации через GUI:
- Перейди в Tasks → Replication Tasks
- Нажми ADD
- Настрой источник и назначение:
config
{ "source": "tank/data", "target": "ssh://user@backup-server/backup-pool/data", "schedule": "0 2 * * *", # Каждый день в 2:00 "recursive": true, "compression": "lz4", "encryption": true } - Проверь соединение через Test Connection
- Запусти пробную репликацию
2. Облачная синхронизация (Cloud Sync)
Идеально для offsite backup. TrueNAS поддерживает все популярные облака:
| Провайдер | Рекомендация | Стоимость (примерно) |
|---|---|---|
| Backblaze B2 | Лучшее соотношение цена/качество | $5/TB в месяц |
| AWS S3 Glacier | Для архивных данных | $1/TB в месяц |
| Google Cloud | Для интеграции с экосистемой Google | $20/TB в месяц |
# Пример конфигурации Backblaze B2
cloud_sync_task:
name: "daily_backup_to_b2"
direction: "PUSH"
transfer_mode: "SYNC"
path: "/mnt/tank/important_data"
credentials:
provider: "B2"
account_id: "YOUR_ACCOUNT_ID"
application_key: "YOUR_APP_KEY"
bucket: "your-bucket-name"
folder: "truenas_backup"
schedule: "0 3 * * *" # 3:00 ночи
encryption: true
encryption_password: "STRONG_PASSWORD_HERE"
3. Rsync задачи
Классический метод для копирования на другой сервер или внешний диск.
# Пример rsync команды с прогрессом и логированием
rsync -avh --progress --delete \
--log-file=/var/log/rsync_backup.log \
/mnt/tank/data/ \
user@backup-server:/backup/truenas/
Настройка через Tasks → Rsync Tasks:
- Укажи путь источника (Local Path)
- Настрой удаленный хост (Remote Host)
- Выбери режим: Module (если на удаленной стороне rsync daemon) или SSH
- Настрой расписание (Schedule)
- Добавь дополнительные параметры:
config
-avh --delete --compress --stats
Практический пример: Многоуровневая стратегия
Давай настроим комплексную систему для небольшой компании:
Уровень 1: Быстрое восстановление (локально)
- Ежечасные снимки ZFS (хранятся 7 дней)
- Ежедневная репликация на второй пул в том же сервере
- Восстановление файлов через .zfs/snapshot
Уровень 2: Защита от сбоя оборудования
- Ежедневная репликация на отдельный сервер TrueNAS в той же локации
- Использование дифференциальных (incremental) отправок
- Хранение: 30 ежедневных + 12 месячных снимков
Уровень 3: Offsite защита
- Еженедельная синхронизация с Backblaze B2
- Шифрование на стороне клиента (rclone crypt)
- Хранение: 4 еженедельных + 12 годовых копий
Автоматизация и мониторинг
#!/bin/bash
# Скрипт проверки статуса бэкапов
# Проверка последней успешной репликации
LAST_REPLICATION=$(zfs get -H -o value truenas:last_replication tank/data)
# Проверка облачной синхронизации
if tail -n 50 /var/log/cloud_sync.log | grep -q "Transfer completed"; then
echo "Cloud backup: OK"
else
echo "Cloud backup: FAILED" | mail -s "Backup Alert" admin@company.com
fi
# Проверка свободного места
ZPOOL_CAPACITY=$(zpool list -H -o capacity tank | sed 's/%//')
if [ $ZPOOL_CAPACITY -gt 80 ]; then
echo "Warning: Pool capacity at ${ZPOOL_CAPACITY}%"
fi
Восстановление данных (Disaster Recovery)
Самая важная часть — убедись, что ты можешь восстановить данные:
Восстановление из снимка ZFS:
# Просмотр доступных снимков
zfs list -t snapshot -r tank/data
# Восстановление конкретного файла
cp /tank/data/.zfs/snapshot/daily_2024-01-15/important.doc /восстановление/
# Откат всего датасета к снимку
zfs rollback tank/data@daily_2024-01-15
Восстановление из облака:
# Через rclone (установи через Community Plugins)
rclone sync --progress \
b2:bucket-name/encrypted_backup/ \
/mnt/temp/restore/ \
--b2-account=XXX --b2-key=YYY
# Расшифровка если использовался rclone crypt
rclone cryptdecode remote:encrypted_path SECRET_PASSWORD
Частые ошибки и как их избежать
- Ошибка: Хранение бэкапов на том же физическом диске
Решение: Всегда используй отдельные физические носители - Ошибка: Отсутствие мониторинга
Решение: Настрой уведомления на почту/Telegram при сбое бэкапа - Ошибка: Нет плана ротации
Решение: Используй политику retention (удалять старые снимки через 30/90/365 дней) - Ошибка: Шифрование без управления ключами
Решение: Храни ключи шифрования отдельно от зашифрованных данных
Часто задаваемые вопросы (FAQ)
Как часто нужно делать бэкапы?
Зависит от критичности данных. Для бизнеса: ежечасные снимки + ежедневные репликации + еженедельные offsite. Для дома: ежедневные снимки + еженедельные облачные бэкапы.
Можно ли использовать btrfs вместо ZFS для бэкапов?
Технически да, но ZFS лучше интегрирован в TrueNAS. Если у тебя уже есть btrfs на источнике, используй rsync или rclone для копирования.
Как минимизировать стоимость облачного хранения?
1. Используй дедупликацию на уровне ZFS (осторожно с RAM)
2. Настрой компрессию lz4 или zstd
3. Используй холодное хранилище (Glacier, Deep Archive) для архивных данных
4. Исключи временные файлы и кэши из бэкапа
Что делать если репликация ZFS падает по таймауту?
1. Увеличь timeout в настройках репликации
2. Разбей большие датасеты на части
3. Используй --compressed флаг если данные уже сжаты
4. Проверь сетевую стабильность и MTU
Заключение
Настройка резервного копирования в TrueNAS — это не разовая задача, а процесс. Начни с простой репликации на внешний диск, затем добавь второй сервер, и наконец — облачное хранилище. Помни: бэкап без проверки восстановления — это не бэкап.
Ключевые шаги для старта сегодня:
- Создай задачу снимков ZFS для критических данных
- Настрой репликацию на отдельный диск или сервер
- Зарегистрируйся в Backblaze B2 и настрой Cloud Sync
- Запланируй тестовое восстановление на следующую неделю