truenas定时快照任务必须绑定到已创建的数据集上,不可全局启用;数据集名仅支持小写字母、数字和短横线,且不能以数字开头;快照本身无法直传公有云,需通过cloud sync同步文件而非快照流。

定时快照任务必须先创建数据集再配置
TrueNAS 的定时快照任务不是全局开关,它绑定在具体的数据集(dataset)上。如果你直接点「添加」却找不到目标目录,大概率是还没创建对应的数据集,或者该数据集没挂载在 Web UI 可见路径下。
常见错误现象:No datasets available 或列表为空;点击「数据集」页面右上角「添加数据集」后,名称填了 backup 却提示 Invalid dataset name(含空格、下划线或以数字开头都不行)。
- 数据集名只能用小写字母、数字、短横线(
-),不能以数字开头,例如photos-2024合法,2024-photos非法 - “递归的”勾选与否影响子数据集是否被快照:比如你有
pool1/media和pool1/media/movies两个数据集,不勾选递归,只对media快照;勾选后,movies也会被单独快照 - 命名惯例建议用
%Y-%m-%d_%H:%M而非%Y%m%d%H%M%S:后者生成的快照名如20260930220601不易人工识别,且部分云同步工具对冒号敏感,%Y-%m-%d_%H:%M更稳妥
快照本身不能直接同步到公有云
TrueNAS 的「复制任务」只支持推送到另一台 TrueNAS(或兼容 ZFS 的系统),不支持直连 AWS S3、Google Drive、阿里云 OSS 等公有云对象存储。试图在复制任务的目标类型里选“S3”会发现根本不存在这个选项——那是 Cloud Sync 模块干的事,且它同步的是「文件」,不是「ZFS 快照」。
也就是说:zfs send 产生的快照流无法被 Cloud Sync 消费;Cloud Sync 只能读取数据集挂载后的普通文件路径(如 /mnt/pool1/backup)。
- 若你真想把快照内容上云,得先用
zfs send | zfs receive在本地建一个只读克隆,再用rsync或tar打包成文件,最后交由Cloud Sync上传 - 更常见的做法是:用定时快照防本地误删,另起一套
Cloud Sync任务,每天同步最新状态的文件(非快照),二者分工明确 - 注意
Cloud Sync默认不校验文件一致性,如需强一致,请开启「启用高级一致性检测」,但会显著拖慢速度,尤其对小文件多的目录
Cloud Sync 连接公有云时最常卡在授权和路径
点「+ 创建」→ 选「Google Drive」或「Amazon S3」→ 点「授权」后浏览器弹出空白页或报 redirect_uri_mismatch,基本是 OAuth 回调地址没配对。TrueNAS SCALE 23.10+ 已内置正确 redirect,但老版本或自建 reverse proxy 时容易出问题。
另一个高频坑:填「远程路径」时写 /MyBackup,结果同步后文件全堆在根目录,实际应填 MyBackup(不带开头斜杠);填错会导致任务保存成功但执行时报 Path not found。
- S3 类服务要确认 region 填对,比如阿里云 OSS 的
oss-cn-hangzhou,填成cn-hangzhou就连不上 - Google Drive 的「远程路径」填的是文件夹名,不是完整 URL;首次运行会自动在你的网盘根目录下建这个文件夹
- 如果用 IAM Role(AWS)而非 Access Key,Cloud Sync 不支持,必须退回到 AKSK 方式
真正能自动化的只有「文件同步」,不是「快照同步」
别被「快照」这个词带偏。ZFS 快照是元数据快照,不可直接传输;公有云对象存储没有 ZFS 层,不理解 zfs send 流。所有所谓“同步快照到云”的方案,本质都是:定期生成快照 → 定期导出为文件 → 定期上传文件。
这意味着你要维护至少两套计划:一套在「数据保护 > 定期快照任务」里,控制快照生命周期;另一套在「数据保护 > Cloud Sync」里,控制文件上传频率和保留策略。两者时间点最好错开,避免 I/O 冲突。
最容易被忽略的一点:Cloud Sync 任务默认「仅同步新增/修改文件」,不会自动清理云上已删除的本地文件。如果你希望云端严格镜像本地状态,必须手动勾选「删除云中不存在的文件」——但这个操作不可逆,误关本地文件夹可能清空整个备份桶。











