Summary ¶
TrueNAS Scale には System Settings / General で設定ファイルをダウンロードできる機能があるが TrueNAS Core にはあるらしい自動バックアップの機能がない。
また、バックアップができたとして TrueNAS 上に保存しても取り出せなかった場合無駄なので方法を考える
仕様を決める ¶
バックアップが必要なファイルは下記になる
- System Settings / General のファイル
- Pool / Datasets の Key か Passphrase
- これは構築時に保管しているはずなのでわざわざ毎回保管するものではない
- 同一保管はリスクがあるので避けるべき
この2つがあれば OS Disk が壊れても復帰できるはずなのでこれを下記の仕組みで保護してみる
- cron で5分毎に Shell Script を実行
- 変更があった場合に新しいバックアップを作成して Datasets に保管
- 定期実行している Cloud Sync Tasks で暗号化してクラウドに転送
- S3 に WORM(Write Once Read Many) をしてあるので最新は 30日保持
- 古いバージョンは 14日で削除する
- S3 に WORM(Write Once Read Many) をしてあるので最新は 30日保持
ユーザーを作成 ¶
Script 配置と保存先用のユーザーを作成しておきます
- Identification
- Full Name / Username:
tnasautobackup
- Disable Password: ■
- Full Name / Username:
- User ID and Groups
- Create New Primary Group: ■
- Directories and Permissions
- Home Directory:
/nonexistent
後で変える - Create Home Directory: □
- Home Directory:
- Authentication
- Shell:
nologin
- Samba Authentication: □
- Shell:
Datasets を作成 ¶
Topic
Dataset は NFSv4 権限管理下だとうまく設定できないため Share Type:
Generic
配下に作成する- Parent Path:
DataVol1/Backup
- Name:
TrueNASScaleBackup
- Share Type:
Multiprotocol
Permissions を変更する
- Owner:
tnasautobackup
- Apply User: ■
- Group:
tnasautobackup
- Apply Group: ■
- Access Mode:
- User: ■ ■ ■
- Group: ■ ■ ■
- Other: □ □ □
tnasautobackup の Home directory を変更
- Home Directory:
/mnt/DataVol1/Backup/TrueNASScaleBackup
- Home Directory Permissions:
- User: ■ ■ ■
- Group: ■ ■ ■
- Other: □ □ □
Datasets に戻って Permissions が指定どおりであること Unix 権限になっていることを確認しておく
これがあってはダメ
Click an item to view NFSv4 permissions
API Key を作る ¶
API Key を入手します
Warning
これはユーザー単位ではなくシステム単位なので取り扱いには気おつけましょう。
Shell Script ¶
下記は環境に合わせて修正が必要
TRUENAS_HOST
TRUENAS_APIKEY
TRUENAS_BACKUP_DIR
- バックアップの保持期間は14日間でそれを超える場合は削除
/tmp/_backup_hash
に sumsha256 を保管して変更があった場合のみTRUENAS_BACKUP_DIR
に転送
truenas-scale-api-backup.sh
|
|
System Settings / Shell
で設置する
|
|
System Settings > Advanced > Cron Jobs
で設定
- Description:
TrueNAS Scale automatic config backup
- Command:
/mnt/DataVol1/Apps/TrueNASScaleBackup/truenas-scale-api-backup.sh
- Run As User:
tnasautobackup
- Schedule:
Custom (*/15 * * * *) Every 15 minutes
- Hide Standard Output: ■
- Hide Standard Error: □
- Enabled: ■
テストする場合は Cron の実行を待ってもよいし手早く済ませたい場合は下記で確認出来る
|
|
最後に ¶
これで自動でバックアップされる。また Cloud Sync Tasks が適切に設定されていれば、クラウドにも同期されているため OS Disk が死んでも復旧が容易になった。