restic 备份网络文件系统时如何关闭进度扫描(--no-scan)
【免费下载链接】resticFast, secure, efficient backup program项目地址: https://gitcode.com/GitHub_Trending/re/restic
当你用 restic 备份网络文件系统(如 NFS 挂载点)或 FUSE 挂载目录时,可能会发现备份速度不理想。其中一部分开销来自 restic 自身:备份启动后,restic 会并行遍历整个文件树,统计文件总数和总大小,用来在进度条里估算剩余时间(ETA)。文档明确指出,这次额外统计会产生额外的 I/O,"可以拖慢网络文件系统或 FUSE 挂载的备份"。
如果你不需要进度估算,restic 提供了backup命令的--no-scan选项来关闭这次预扫描,用"看不到进度估算"换取备份提速。本文说明该选项的适用条件、使用方法和结果判断。
适用前提
- restic 版本:
--no-scan是在 0.15.0(2023-01-12 发布)中新增的选项,见 0.15.0 变更记录。使用 0.15.0 之前的版本时该选项不存在。 - 已有可用的 restic 仓库(通过
restic init创建),备份时需要提供仓库路径和密码。 - 备份目标是网络文件系统或 FUSE 挂载点这类遍历开销较大的目录。文档中描述的收益场景是"network file systems or FUSE mounts",对于本地磁盘上的备份,文档未说明该选项能带来类似收益。
为什么预扫描会拖慢网络文件系统备份
restic 的backup命令会启动一个独立的扫描器进程,遍历文件树以获取总大小和文件/目录数量,并用这些信息计算 ETA(来源:CHANGELOG.md 中 Enhancement #3931 的说明)。对本地文件系统来说这次遍历开销不大,但网络文件系统上每次 stat/遍历都可能伴随网络往返,因此扫描本身会成为明显的额外负担。
关闭扫描的代价同样明确:进度条中依赖初始扫描的"预计总文件数、总大小"以及基于总体的完成时间估算将不再显示,见 Tuning parameters — Disabling backup progress estimation。
执行步骤
备份命令的基本形式与 Backing up 中一致,只需追加--no-scan。以下示例中/srv/restic-repo是文档使用的仓库路径示例,/mnt/nfs-share代表你的网络文件系统挂载点,执行时替换为实际路径:
restic -r /srv/restic-repo --no-scan backup /mnt/nfs-share如果希望看到更详细的输出,可以加上--verbose:
restic -r /srv/restic-repo --no-scan --verbose backup /mnt/nfs-share该选项也可写成默认形式--no-scan[=false],含义是"do not run scanner to estimate size of backup"(见 restic-backup 手册页)。
结果验证
restic 不传--verbose时会显示实时进度条,文档给出的示例格式(文档示例):
[0:34] 2.96% 867 files 5.046 GiB, total 307867 files 170.438 GiB, 0 errors ETA 18:35进度条从左到右依次为:已用时间、完成百分比、已处理文件数及其大小、本次备份预计的总文件数与总大小、错误计数、预计完成时间。其中"预计总数/总大小"来自初始扫描,--no-scan正是禁用这一环节(见 Backing up)。因此启用--no-scan后,进度显示中不再提供总体总量与 ETA 估算,但仍会显示已处理文件数、大小和错误数。
备份成功的判断与常规备份一致:命令结束时输出本次备份的文件统计,并出现类似snapshot 40dc1520 saved的快照保存提示(文档示例输出)。错误计数(N errors)应为 0;出错的文件路径会打印在进度条上方。
另外注意文档的一个提示:实时进度显示的是"已处理文件",而非实际传输的数据量——传输量可能因去重而更少,也可能更多。
限制与注意事项
- 代价是失去进度估算:这是文档明确说明的权衡("at the cost of not seeing a progress estimate"),不是 bug,关闭扫描后没有预计完成时间属于正常现象。
- 该选项只影响备份时的进度估算扫描,它不改变 restic 为了完成备份而对源文件本身的遍历与读取——备份仍需读取每个文件内容,选项消除的只是额外的那一遍统计 I/O。
- 如果备份的是 FUSE 类文件系统且文件 inode 不稳定,可参考 Backing up 中关于
--ignore-inode的说明,它与--no-scan相互独立,按需组合。 - 其他与备份性能相关的调优项(后端连接数、压缩级别、pack size 等)见 Tuning parameters,它们与
--no-scan解决的问题不同,可分别评估。
【免费下载链接】resticFast, secure, efficient backup program项目地址: https://gitcode.com/GitHub_Trending/re/restic
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考