Представь, что твой TrueNAS сервер — это центральное хранилище критически важных данных. Фотографии, документы, проекты, базы данных. Теперь представь, что происходит сбой диска или, что хуже, пожар в серверной. Все данные потеряны. Именно для предотвращения таких сценариев существует rsync — мощный инструмент для синхронизации и резервного копирования. В этой статье я, как Senior DevOps, покажу тебе, как правильно настроить rsync в TrueNAS, чтобы твои данные были в безопасности.
Что такое rsync и зачем он нужен в TrueNAS?
Rsync (remote synchronization) — это утилита командной строки для эффективной передачи и синхронизации файлов между системами. Её главные преимущества:
- Инкрементное копирование — передаются только измененные части файлов
- Поддержка сжатия — экономия трафика при передаче по сети
- Сохранение прав доступа — метаданные файлов не теряются
- Возобновление передачи — можно продолжить с места прерывания
Подготовка к настройке rsync в TrueNAS
Прежде чем мы перейдем к непосредственной настройке, давай подготовим нашу систему. Тебе понадобится:
1. Настройка пользователей и прав доступа
Для безопасной работы rsync создадим отдельного пользователя:
# В веб-интерфейсе TrueNAS:
# 1. Перейди в Credentials → Local Users
# 2. Нажми "Add"
# 3. Заполни поля:
# - Full Name: rsync_user
# - Username: rsync_user
# - Password: [надежный пароль]
# - Home Directory: /nonexistent
# 4. В группе "Auxiliary Groups" добавь "wheel"
# 5. Сохрани изменения
2. Создание общего ресурса для rsync
Создадим dataset, который будем синхронизировать:
# В веб-интерфейсе TrueNAS:
# 1. Storage → Pools
# 2. Выбери пул и нажми "Add Dataset"
# 3. Укажи имя: rsync_backup
# 4. В ACL Type выбери "POSIX"
# 5. Настрой права доступа:
# - Owner: rsync_user
# - Owner Group: rsync_user
# - Mode: 750
Настройка rsync сервера в TrueNAS
Теперь настроим TrueNAS в качестве rsync сервера, чтобы другие системы могли подключаться к нему.
Шаг 1: Включение rsync сервиса
# В веб-интерфейсе TrueNAS:
# 1. Services → Rsync
# 2. Нажми кнопку "Configure"
# 3. Настрой параметры:
# - Port: 873 (стандартный порт rsync)
# - Auxiliary Parameters: --verbose --log-file=/var/log/rsync.log
# 4. Включи сервис (переключи тумблер в ON)
Шаг 2: Настройка модулей rsync
Модули — это каталоги, которые будут доступны для синхронизации. Создадим конфигурационный файл:
# Создай файл /etc/rsyncd.conf
# В веб-интерфейсе TrueNAS:
# 1. System → Advanced → Init/Shutdown Scripts
# 2. Нажми "Add"
# 3. Заполни:
# - Type: Command
# - Command: echo '[backup]\npath = /mnt/pool/rsync_backup\ncomment = Backup Directory\nread only = no\nlist = yes\nauth users = rsync_user\nsecrets file = /etc/rsyncd.secrets' > /etc/rsyncd.conf
# - When: Post Init
Шаг 3: Настройка аутентификации
# Создай файл с паролями:
# 1. Создай файл /etc/rsyncd.secrets
# 2. Добавь строку: rsync_user:StrongPassword123
# 3. Установи правильные права:
chmod 600 /etc/rsyncd.secrets
chown root:wheel /etc/rsyncd.secrets
Создание задач rsync в TrueNAS
TrueNAS предоставляет удобный интерфейс для создания автоматических задач синхронизации.
Настройка задачи резервного копирования
# В веб-интерфейсе TrueNAS:
# 1. Tasks → Rsync Tasks
# 2. Нажми "Add"
# 3. Заполни параметры:
# - Path: /mnt/pool/important_data
# - Remote Host: backup.server.com
# - Remote Module Name: backup
# - Direction: Push
# - Schedule: 0 2 * * * (ежедневно в 2:00)
# - User: rsync_user
# - Additional Options: -avz --delete --progress
Расширенные параметры rsync
Вот таблица наиболее полезных параметров rsync:
| Параметр | Описание | Пример |
|---|---|---|
| -a, --archive | Режим архива (сохраняет всё) | -a |
| -v, --verbose | Подробный вывод | -v |
| -z, --compress | Сжатие при передаче | -z |
| --delete | Удалять лишние файлы на приемнике | --delete |
| --progress | Показывать прогресс | --progress |
| --bwlimit | Ограничение скорости (KB/s) | --bwlimit=1000 |
Практические примеры использования
Пример 1: Ежедневное резервное копирование на удаленный сервер
#!/bin/bash
# Скрипт для ручного запуска rsync
# Сохрани как /root/scripts/backup.sh
REMOTE_USER="rsync_user"
REMOTE_HOST="backup.example.com"
REMOTE_MODULE="nas_backup"
LOCAL_PATH="/mnt/pool/documents"
LOG_FILE="/var/log/rsync_backup.log"
echo "$(date): Starting backup" >> $LOG_FILE
rsync -avz --delete --progress \
--password-file=/etc/rsync_password \
$LOCAL_PATH \
${REMOTE_USER}@${REMOTE_HOST}::${REMOTE_MODULE} \
>> $LOG_FILE 2>&1
if [ $? -eq 0 ]; then
echo "$(date): Backup completed successfully" >> $LOG_FILE
else
echo "$(date): Backup FAILED!" >> $LOG_FILE
fi
Пример 2: Синхронизация между двумя TrueNAS серверами
# Настройка на сервере-источнике (TrueNAS A):
# 1. Tasks → Rsync Tasks → Add
# 2. Параметры:
# - Path: /mnt/pool/shared_data
# - Remote Host: 192.168.1.100 (TrueNAS B)
# - Remote Module Name: replica
# - Direction: Push
# - Schedule: */30 * * * * (каждые 30 минут)
# - Additional Options: -av --partial --timeout=300
Мониторинг и отладка
После настройки важно убедиться, что всё работает правильно.
Проверка статуса rsync сервиса
# Проверь, работает ли rsync сервер
netstat -tlnp | grep 873
# Посмотри логи rsync
tail -f /var/log/rsync.log
# Проверь выполнение задач
cat /var/log/cron.log | grep rsync
Тестовое подключение к rsync серверу
# С другого сервера проверь доступность
rsync rsync://rsync_user@truenas_ip/
# Если требуется пароль, используй:
RSYNC_PASSWORD="your_password" rsync rsync://rsync_user@truenas_ip/
Оптимизация производительности rsync
Для больших объемов данных используй эти настройки:
# Оптимизированная команда для больших файлов
rsync -av --progress --stats \
--bwlimit=50000 \
--partial \
--timeout=600 \
--exclude='*.tmp' \
--exclude='.Trash-*' \
/source/path/ \
user@remote::module/
Безопасность при использовании rsync
- Используй SSH туннель вместо прямого доступа к порту 873
- Ограничь доступ по IP в настройках брандмауэра TrueNAS
- Регулярно меняй пароли в /etc/rsyncd.secrets
- Используй read-only модули для резервных копий
- Веди журнал аудита всех операций синхронизации
Часто задаваемые вопросы (FAQ)
Как проверить, что задача rsync выполняется по расписанию?
Перейди в Tasks → Rsync Tasks и посмотри столбец "Last Run". Также проверь логи в /var/log/cron.log. Для детальной отладки добавь параметр --verbose в Additional Options задачи.
Можно ли использовать rsync через SSH вместо rsync демона?
Да, это даже более безопасный вариант. В настройках задачи выбери "SSH" вместо "Rsync Module" и укажи SSH ключ в Credentials → SSH Keypairs.
Как восстановить данные из резервной копии rsync?
Используй обратное направление (Pull вместо Push) или выполни команду вручную:
rsync -av user@remote::module/path/to/backup /local/restore/path
Почему rsync работает медленно?
Возможные причины и решения:
- Слишком много мелких файлов — используй tar для архивации
- Сетевое ограничение — проверь --bwlimit и качество сети
- Дисковая подсистема — проверь нагрузку на диски
- Параметры сжатия -z могут замедлять на быстрых сетях
Как исключить определенные файлы из синхронизации?
# Создай файл /root/rsync_exclude.txt
*.tmp
.DS_Store
*.log
cache/
temp/
# И используй в задаче:
--exclude-from=/root/rsync_exclude.txt
Заключение
Настройка rsync в TrueNAS — это мощный инструмент для построения отказоустойчивой инфраструктуры хранения данных. Мы рассмотрели все этапы: от базовой настройки сервера до создания автоматизированных задач резервного копирования. Помни, что правильная настройка rsync — это не просто техническая задача, это инвестиция в безопасность твоих данных.
Ключевые моменты, которые нужно запомнить:
- Всегда используй отдельного пользователя для rsync
- Настрой правильные права доступа к файлам и каталогам
- Тестируй задачи на небольших объемах данных перед полным развертыванием
- Регулярно проверяй логи и статус выполнения задач
- Имей план восстановления данных и периодически его тестируй
Теперь у тебя есть полное руководство по настройке rsync в TrueNAS. Начни с простой задачи резервного копирования одного каталога, а затем масштабируй решение на всю инфраструктуру. Данные — это твой самый ценный актив, защити их правильно!