TrueNAS 25.10.1 で Rsync を設定して、
別の TrueNAS 25.10.1 にフォルダの内容をコピーしてみます。
Rsync の設定方法としては、遠隔側のマシンで Rsync デーモンを動かす方法と、 SSH接続を利用する方法があるみたいですが、 TrueNAS 25.10.1 では Rsync デーモンがサービスで動作させられないので、実質 SSH接続一択です。
結構長々とした手順になります。
(とりあえず手順の調整だけで力尽きたのでまずはテキストのみ)
rsync 用のユーザーを送信元 TrueNAS と 宛先 TrueNAS の両方に作成します。
同一の名前である必要はありませんが、わかり易いように今回は両方とも
rsyncuser
というユーザーを作成します。
なぜ rsync 用ユーザーを普段使いのユーザーと分けるのか
最初に、この点を明確にします。
rsync は「人」ではなく「仕組み」が動かす処理
rsync タスクは、
無人で
定期的に
長期間
動き続ける 自動処理です。
一方、普段使うユーザーは、
パスワードを変える
グループを変更する
ACL を調整する
場合によっては削除する
いう 人に紐づく存在です。
👉性質がまったく異なるものを同じユーザーにすると、
必ずどこかで破綻します。
rsync 用ユーザーを分けることで、
rsyncuser
→ 「指定された場所に書き込むだけ」
普段のユーザー
→ 「SMB で閲覧・編集する」
という 権限と責務の分離ができます。
これにより:
rsync が ACL を壊す
SMB の操作が rsync を壊す
といった事故を防げます。
トラブル時の切り分けが容易になる
もし将来、
ファイルの所有者がおかしい
SMB でアクセスできない
rsync が失敗する
といった問題が起きた場合、
rsyncuser が関わっていれば rsync 側
普段のユーザーが関わっていれば SMB 側
と 原因を即座に切り分けできます。
セキュリティ面でも安全
rsyncuser は:
sudo 権限なし
アクセス先は限定
SSH は鍵認証のみ
という 最小権限ユーザーです。
普段使いのユーザーに
「自動処理用の鍵」を持たせるより、
はるかに安全です。
手順全体の考え方
SSH はユーザーの home を前提に動く
鍵は TrueNAS が管理(Key chain)する
rsync はデータを置くだけ
SMB は見せ方と権限を管理
rsync 用ユーザーと人のユーザーは分ける
この前提を満たす選択肢だけを使います。
Step 1:両方の TrueNAS にホーム用データセットを作成する
理由
SSH 鍵や rsync 実行環境は、
必ずユーザーの home ディレクトリを使います。
曖昧な home や system 領域では、
後から不整合が出ます。
実施内容(送信元・宛先とも)
Storage → Pools → tank → Add Dataset
Dataset name:home
Mount point:/mnt/tank/home
Share type:Generic
(ACL type:POSIX)
Step 2:送信元・宛先の両方で rsync 用ユーザーを作成する
理由
Semi-automatic SSH setup は
宛先ユーザーが存在する前提で動作
鍵配置・接続確認が自動で行われる
実施内容(両方共通)
Credentials → Local Users → Add
Username:rsyncuser
Home directory:/mnt/tank/home
(配下にユーザー名で作成される)
Shell:/usr/bin/zsh (何でもいい)
Password:設定する(初期のみ)
Allow SSH Login with Password:ON(初期のみ)
sudo:なし
Step 3:宛先側で rsync データ保存用データセットを作成する
理由
コピー先となる場所ですが、既存のデータセットを使用すると事故ります。
実施内容(宛先のみ)
Storage → Pools → tank → Add Dataset
Dataset name:例 backup_from_sender
Mount point:/mnt/tank/backup_from_sender
Share type:SMB
ACL type:SMB
ACL は 宛先側で管理します。
rsyncuser を owner に設定してください。
追加のユーザーとしてフルコントロールを与えるだけではダメです。
(owner を変更したい場合は、 rsync でコピーすることがなくなったら、という認識にしてください)
Step 4:送信元で SSH 接続(Key chain)を作成する
理由
鍵を TrueNAS が一元管理
タスクと鍵を分離
将来の再利用が容易
実施内容
Credentials → Backup Credentials → SSH Connections → Add
Setup method:Semi-automatic (TrueNAS only)
Username:rsyncuser
Generate New Key
Save
Step 5:rsync ユーザーのパスワード SSH を無効化する
理由
自動処理ではパスワード認証は不要です。
実施内容
rsyncuser を編集
Public SSH Key が登録されているのが確認できます。
Allow SSH Login with Password:OFF
パスワード自体も使わないので、
□ SMB Access のチェックを外して
■ Disable Password
Step 6:Rsync Task を作成する(Push / SSH)
Data Protection → Rsync Tasks → Add
Direction:Push
Rsync Mode:SSH
Connect using:SSH connection from key chain
SSH connection:作成済みのもの
Remote Path:既存ディレクトリの1階層上、コピーしたいディレクトリ自体を指定すると、その中にディレクトリを作成してコピーされる
More Options
OFFにすること
□ Preserve permissions
□ Preserve xattrs
□ Archive 複数のオプションをまとめてオンにする危険スイッチ
□ Quiet 進捗や通常ログを抑止、TrueNAS ではどうせ見えないのでトラブルシュートの為にも残すべき
ONでOK
■ Times 時刻同期
■ Compress 圧縮転送
■ Delay Update ファイルを一時ファイルとしてコピーしてからリネームして置き換える
任意
□ Delete 宛先にしか存在しないファイルは削除する(ミラー)
※ただし、ミラー運用なら Replication の方が妥当
オプションにはないけどオフ推奨
Preserve owner
Preserve group
Preserve ACLs
rsync では権限設定はコピーしないのがセオリー。
Step 7:実行・確認
手動実行
ログ確認
SMB から参照確認
なお、
TrueNAS 同士でコレですから、
相手先が Linux となるとどこを個別対応するのか、
気が遠くなります。
(Relication と比べて Rsync は別フラットフォームとの同期用という位置づけのはずなのに)
相手が Linux になると:
鍵配置
ユーザー作成
home / shell / パーミッション
rsync の実行環境
を自分の手作業で保証する必要があるはずです。