Backupninja 1.2.2 介绍与选型指南
Backupninja 1.2.2 介绍与选型:配置驱动的备份调度框架——向 /etc/backup.d/ 投放配置即可统一调度 rdiff-backup、duplicity、rsync、tar、borgbackup、restic、mysqldump 等备份后端,附邮件报告与 ninjahelper 向导;含架构、版本沿革与同类量化对比,全部数据溯源自官方文档与仓库,查询日期 2026-10-24。
Backupninja 1.2.2 介绍与选型指南
目标:说清 Backupninja 是什么、解决什么问题——它是一个配置驱动的「备份调度框架」(meta-backup system),通过向 /etc/backup.d/ 丢配置文件来统一调度 rdiff-backup、duplicity、rsync、tar、borgbackup、restic、mysqldump 等各类备份后端,并提供邮件报告与 ninjahelper TUI 向导;本文为认知与选型篇,版本、依赖、后端清单等全部数据均于 2026-10-24 从官方与 Debian 权威来源联网溯源取得,安装实测见本专栏安装实测篇,CLI 与 TUI 详解见命令详解篇。
一、环境信息
本文是认知与选型篇,不依赖特定服务器环境;文中全部版本、依赖与功能数据均来自下列权威来源,查询日期统一为 2026-10-24:
| 信息项 | 来源 | 查询结果 |
|---|---|---|
| 最新稳定版本 | Debian 软件源(packages.debian.org/trixie/backupninja)与 Debian Package Tracker(tracker.debian.org/pkg/backupninja) | 上游版本 1.2.2,Debian 打包版本 1.2.2-1(Debian changelog 日期 2023-02-12) |
| 上游代码仓库 | Debian 包 Homepage 字段:0xacab.org/liberate/backupninja(GitLab,维护方 Liberate/Riseup Labs 体系) | 项目由 riseup.net 集体发起,1.2.0 起维护方署名由 Riseup Labs 变更为 Liberate |
| 官方手册 | 系统手册页 backupninja(1)、backup.d(5)、backupninja.conf(5)(随 Debian 包发布) | 调度语法、配置文件格式、handler 清单 |
| 包元数据 | packages.debian.org(trixie/stable) | 包大小 89.9 kB,安装后 360 kB,架构 all(纯脚本,无编译二进制) |
💡 技术拓展:查询版本时容易混淆「上游版本」与「发行版仓包版本」。Backupninja 的上游发布以 GitLab 标签(如 1.2.1 于 2021-01-26 打标)和 Debian 导入记录为准;Debian stable(trixie)、oldstable(bookworm)当前均为 1.2.2-1,oldoldstable(bullseye)为 1.2.1-1。即截至 2026-10-24,官方最新稳定版就是 1.2.2,Debian 仓包与上游同步、并无滞后;但该项目上游发版节奏慢(最近三年无新上游版本),选型时应接受「功能稳定、更新低频」的现状,并以 Debian 仓库的打包版本为实际安装来源。
二、软件概述
2.1 定位:配置驱动的备份调度框架
Backupninja 的官方自我描述是「lightweight, extensible meta-backup system(轻量、可扩展的元备份系统)」:你在 /etc/backup.d/ 目录下放置若干 ini 风格的配置文件,backupninja 主脚本每小时被 cron 拉起一次,按文件名顺序与 when 调度规则逐个执行这些配置——每个配置文件按后缀名(.rdiff、.dup、.mysql、.tar、.rsync、.sys、.sh 等)交给对应的 handler 脚本去完成真正的备份动作。
它与「备份引擎」类工具(BorgBackup、restic、rdiff-backup 自身)有本质区别:Backupninja 本身不做备份存储、不管理快照格式、不提供去重或加密,它只负责「何时、以什么配置、调用哪个后端、跑完之后如何汇总报告」这一层编排。打个比方:Borg/restic 是发动机,Backupninja 是把多个发动机装进同一辆车并按时发车的调度台。
💡 技术拓展:Linux 备份工具按「能力层次」可分为三类,选型前先分清你要的是哪一层——
类型 代表工具 职责 特点 备份调度框架(本篇主角) Backupninja、rsnapshot(偏 cron+rsync 封装) 统一配置入口、定时调度、多后端编排、运行报告 自身不定义存储格式,后端可替换 备份引擎(单机/拉推式) BorgBackup、restic、rdiff-backup、duplicity 定义快照/增量格式,去重、压缩、加密 能力强但各自配置语法独立,多机多后端时运维碎片化 备份服务器(C/S 架构) UrBackup、Bareos、Proxmox Backup Server、burp 服务端集中管理多客户端、Web 控制台、集中存储 适合多机集中管控,部署与资源开销最大 Backupninja 适合「单机或少量服务器、希望用一套统一配置文件把多种备份任务管起来、不需要集中式备份服务器」的场景。
2.2 发展沿革与版本节奏
Backupninja 由 riseup.net 集体(美国非营利激进技术组织)开发并长期在其自有服务器上使用,随 Debian/Ubuntu 仓库广泛分发。根据 Debian changelog(tracker.debian.org,查询日期 2026-10-24),主要版本节奏如下:
| 版本 | 时间(Debian 打包记录) | 关键变化 |
|---|---|---|
| 1.1.0 | 2018-08 上游、2018-06~08 进入 Debian | 长期维护线 |
| 1.2.0 | 2021-01-22 | 导入新上游;新增 borg 示例文件;debian/control 更新为支持 restic;维护方署名 Riseup Labs → Liberate;mailx 从 Depends 降为 Recommends |
| 1.2.1 | 2021-01-25 | 导入新上游 1.2.1(上游标签日期 2021-01-26) |
| 1.2.2 | 2023-02-12 | 当前最新稳定版;新增 prometheus 指标输出(reportprom);debhelper 兼容 13 |
关键解读:版本节奏约为「数年一版」,1.2.2 距今(2026-10)已三年多没有新上游版本。这不是弃坑信号——它随 Debian trixie(2025 年发布的 stable)正常迁移并保持 1.2.2-1,且该工具定位就是「稳定、极简、无守护进程」;但对追新特性的人来说,这里明显不如引擎型工具活跃。
2.3 软件性质
- 实现语言:纯 POSIX/bash shell(Debtags 标注 implemented-in::shell),主脚本 /usr/sbin/backupninja 约 730 行,无守护进程、无数据库、无运行时依赖。
- 许可:GPL-2.0+(Debian copyright 文件),自由软件。
- 体量:deb 包 89.9 kB,安装后约 360 kB,含主脚本、ninjahelper 向导、13 类 handler、9 个 TUI helper 与手册页。
- 运行方式:无常驻进程;/etc/cron.d/backupninja 每小时整点拉起
backupninja,由其内部when规则决定本次是否真正执行各配置。
三、核心架构
3.1 三层结构
Backupninja 的架构可以概括为「一个调度器 + 一组 handler + 一个配置目录」:
| 层 | 位置 | 职责 |
|---|---|---|
| 调度器 | /usr/sbin/backupninja(cron 每小时拉起) | 读取主配置 /etc/backupninja.conf;扫描 /etc/backup.d/ 下配置;按 when 规则筛选本次应执行的文件;按文件名顺序执行;汇总结果写日志 /var/log/backupninja.log 并发送邮件报告 |
| Handler 脚本 | /usr/share/backupninja/(无扩展名同名脚本) | 每类后端一个 bash 脚本,解析对应配置段并调用真实备份工具(rdiff-backup、duplicity、rsync、tar、mysqldump、borg、restic 等);*.helper 为 ninjahelper 的 TUI 向导脚本 |
| 动作配置 | /etc/backup.d/(ini 风格,0600 权限) | 双数字序命名(如 20-runthisnext.mysql),后缀决定 handler;when = 行可覆盖全局调度;.disabled 后缀即停用 |
扩展机制:要教 backupninja 一个新后端,只需把一个以新后缀命名的 bash 脚本丢进 /usr/share/backupninja/(官方手册 backup.d(5) 原文:Support for additional configuration types can be added by dropping bash scripts with the name of the suffix into /usr/share/backupninja)。.sh 后缀最特殊——它不调用任何备份工具,而是把整个配置文件当 shell 脚本直接执行,用于自定义任务(如备份前导出应用配置、备份后清理)。
3.2 执行链路与报告
一次完整运行的链路(依据 backupninja(1) 手册与 /etc/cron.d/backupninja 包内文件):
- cron 每小时整点执行
/usr/sbin/backupninja(包内置条目0 * * * * root if [ -x /usr/sbin/backupninja ]; then /usr/sbin/backupninja; fi); - 主脚本校验 /etc/backup.d/ 及每个配置文件的权限(必须 root 所有、组/其他不可读写,否则拒绝执行);
- 按文件名字母序遍历配置,与
when调度规则匹配(默认when = everyday at 01:00); - 命中者以 /var/lock/backupninja/ 下的锁文件互斥执行对应 handler;
- 全部结束后按 loglevel 写 /var/log/backupninja.log(logrotate 月轮转 6 份),并向 reportemail(默认 root)发送汇总邮件;可选将日志 rsync 到 reporthost 聚合为 ninjareport,或输出 prometheus node-exporter 文本文件指标(reportprom)。
这一「调度 + 权限校验 + 锁互斥 + 日志 + 邮件报告」的链路,正是它作为「框架」的核心价值:后端随便换,这层治理不变。
四、功能特性
4.1 备份后端(handler)全量清单
以下清单来自 Debian 包官方描述(packages.debian.org/trixie/backupninja,查询日期 2026-10-24)与包内文件列表(/usr/share/backupninja/):
| Handler | 后缀 | 调用的工具 | 依赖/推荐包 | 是否带 TUI 向导 |
|---|---|---|---|---|
| rdiff 增量备份 | .rdiff | rdiff-backup | rdiff-backup | 有(rdiff.helper) |
| dup 加密增量备份 | .dup | duplicity | duplicity、trickle(可选) | 有(dup.helper) |
| borg 去重归档 | .borg | borgbackup | borgbackup | 有(borg.helper) |
| restic 快照备份 | .restic | restic | restic | 有(restic.helper) |
| rsync 镜像/轮转 | .rsync | rsync | rsync | 无 |
| tar 全量打包 | .tar | tar | bzip2(默认 bzip 压缩) | 有(tar.helper) |
| mysql 数据库导出 | .mysql | mysqldump/mysqlhotcopy | mysql 客户端 | 有(mysql.helper) |
| pgsql 数据库导出 | .pgsql | pg_dump/pg_dumpall | postgresql 客户端 | 有(pgsql.helper) |
| sys 系统信息收集 | .sys | dpkg/debconf-utils/sfdisk/hwinfo | debconf-utils、hwinfo、mdadm(可选) | 有(sys.helper) |
| svn 仓库备份 | .svn | svnadmin | subversion | 无 |
| trac 仓库备份 | .trac | trac-admin | trac | 无 |
| maildir 邮件目录 | .maildir | rsync(慢速增量) | rsync | 无 |
| makecd 光盘/ISO | .makecd | genisoimage/wodim | genisoimage、wodim | 有(makecd.helper) |
| sh 自定义脚本 | .sh | 直接执行 | 无 | 无 |
关键解读:handler 覆盖「文件系统 + 主流数据库 + 代码仓库 + 系统信息」四类对象,且数据库导出类 handler 被设计为先执行、文件系统增量类后执行(官方 backup.d(5) 手册建议数据库 dump 用小编号在前、.rdiff 用大编号在后,使 dump 产物被纳入文件系统备份)。
4.2 ninjahelper 交互式向导
/usr/sbin/ninjahelper 是基于 dialog 的终端菜单向导:主菜单列出已有动作配置(可查看/编辑/启停/改名/立即运行/试运行/删除),「create a new backup action」进入各 handler 的分步问答(调度时间、目标目录、包含/排除路径、压缩算法等),最终自动生成命名规范、权限 600 的配置文件。对不想手写 ini 的运维非常友好。九类带 .helper 的后端(borg、dup、makecd、mysql、pgsql、rdiff、restic、sys、tar)都有独立向导。
4.3 报告与可观测
- 邮件报告:每次运行结束向 reportemail 发送汇总(成功/致命/错误/警告计数与各动作状态),reportsuccess/reportinfo/reportwarning/reportspace 控制报告粒度;本地投递由 MTA(Debian 默认推荐装 exim4)完成。
- 日志:/var/log/backupninja.log,loglevel 1–5 可调,logrotate 每月轮转保留 6 份。
- Prometheus 指标(1.2.2 新增):reportprom = yes 时把备份状态写入 prometheus-node-exporter 的文本文件目录,接入 Prometheus 告警体系。
- 集中报表:reporthost/reportuser/reportdirectory 可把各机日志 rsync 到一台报表机聚合为 ninjareport。
4.4 调度能力(when 语法)
when 支持「星期/日 + 时刻」组合与 hourly、manual 特殊值,多 when 行并存即多计划。合法示例(backup.d(5) 原文):
when = sundays at 02:00
when = 30th at 22
when = 30 at 22:00
when = everyday at 01
when = Tuesday at 05:00
when = hourly
when = manual
注意 at 后必须是 2 位小时(可带 :分钟),when = everyday at 5:00、tuesday at 2am 这类写法不合法;when = manual 的配置不参与定时、只能用 backupninja --run 文件 或 ninjahelper 手动执行。
五、快速开始(最小可用示例)
以下最小流程整理自官方手册 backupninja(1) 与 backup.d(5)(来源:Debian trixie 随包手册页,查询日期 2026-10-24);每条命令的完整实测回显见本专栏安装实测篇与命令详解篇,此处仅给认知篇所需的最小命令形态:
# 1. 在 Debian/Ubuntu 上安装(自动带上 dialog、gawk 等基础依赖)
apt-get install backupninja
# 2. 安装后即有每小时整点的 cron 触发;先放一个最简单的动作配置
# (.sh 后缀 = 直接执行的 shell 脚本,适合第一次验证链路)
cat > /etc/backup.d/40-dpkg.sh <<'EOF'
when = manual
dpkg --get-selections > /var/backups/dpkg-selections.txt
EOF
chmod 600 /etc/backup.d/40-dpkg.sh
# 3. 试运行(--test 只做连通性/配置检查,不真正执行动作)
backupninja --test --run /etc/backup.d/40-dpkg.sh
# 4. 真正执行单条动作并输出调试日志
backupninja --run /etc/backup.d/40-dpkg.sh
# 5. 查看运行日志
tail /var/log/backupninja.log
要点:配置文件必须 chmod 600 且属主 root,否则主脚本会因权限校验失败拒绝执行;when = manual 让它不参与定时,验证通过后再改成实际调度(如 when = everyday at 02:00)。更省事的方式是直接运行 ninjahelper,用 TUI 向导生成同样的配置。
六、适用场景与限制
6.1 适合的场景
- 单机多后端统一纳管:一台服务器上同时要「/etc 归档 tar + /var 镜像 rsync + MySQL 每日 dump + 系统信息收集」,用 backupninja 四个配置文件统一调度、统一日志、统一邮件报告,避免四套 cron 与四种日志各自为政。
- Debian/Ubuntu 运维基线:apt 一条命令装好、无常驻服务、纯配置文件可纳入 etckeeper/Ansible 管理,很适合作为发行版运维基线组件。
- 推送到备份服务器/对象存储的编排层:rdiff/dup/borg/restic handler 均支持 remote 目标(ssh),可作为「引擎型工具的统一调度壳」——引擎负责存储格式,backupninja 负责时间、配置与报告。
- 低成本合规留痕:sys handler 自动收集 debconf 应答、包清单、分区表、硬件信息,为灾备重建提供系统画像。
6.2 限制与短板
- 无集中控制台:没有 Web UI,多机管理靠各自配置 + 可选的 ninjareport 日志聚合;需要集中管控请看备份服务器类(UrBackup、Bareos、Proxmox Backup Server、burp)。
- 上游发版低频:1.2.2 之后三年无新上游版本(截至 2026-10-24),新后端特性(如官方 kopia 支持)指望不上;好在 handler 机制本身可自行扩展。
- 秒级 RPO 做不到:调度粒度受 cron 与
when语法限制(最小粒度小时级命中 + 小时内整点分钟),不适合高频增量场景。 - 权限纪律严格:/etc/backup.d/ 下文件必须 root:root 0600,权限多一点也不执行——这是安全设计,也是新手最常见的报错来源。
- 官方 release 与 Debian 仓包版本可能滞后的提示:本项目当前表现相反——上游与 Debian 同步在 1.2.2;但 RHEL 系发行版(EPEL/Fedora rawhide 曾长期停留在 1.1.0)包版本明显滞后,跨发行版选型时以各发行版仓实查为准。
七、同类选型对比(含量化维度)
7.1 量化对比表
下表对比数据均于 2026-10-24 联网溯源:Backupninja 数据来自 Debian 包元数据与 changelog;对比工具列其官方定位(来源为各自官方文档/仓库与本站已有专栏),版本号一律以各官方 Release 页实时为准,此处不硬编码竞品版本。
| 维度 | Backupninja | rdiff-backup / rsnapshot(引擎/快照型) | BorgBackup / restic(引擎型) | UrBackup / Bareos / PBS(备份服务器) | burp(C/S 引擎) |
|---|---|---|---|---|---|
| 类型定位 | 调度框架(meta-backup) | 单引擎 | 单引擎 | C/S 备份服务端 | C/S 引擎 |
| 自身存储格式 | 无(委托后端) | 有(librsync 增量/快照目录) | 有(去重仓/快照仓) | 有(集中存储池) | 有 |
| 加密 | 取决于后端(dup/restic/borg 自带) | rdiff-backup 无原生、rsnapshot 无 | 原生加密 | PBS 原生;UrBackup 可选 | 原生 |
| 调度 | 内置 when + cron | 各自 cron 集成 | 需自建 cron/systemd timer | 服务端统一调度 | 服务端调度 |
| 多机集中管控 | 弱(日志聚合 ninjareport) | 无 | 无 | 强(控制台/Web) | 中 |
| Web UI | 无 | 无 | 无(第三方可选) | UrBackup/PBS 有 | 无官方 |
| 实现语言 | shell(包 89.9 kB/装后 360 kB,Debian 包元数据) | C/Python、shell | C/Python、Go | 各异 | C++ |
| 发版节奏(近 3 年) | 低频(最新 1.2.2,2023-02) | 活跃(rdiff-backup 2.x 系列) | 活跃 | 活跃 | 活跃 |
| 适合人群 | Debian 系单机/少量服务器运维 | 只要单机文件备份 | 要加密去重快照 | 多客户端集中备份 | C/S 且资源占用敏感 |
关键解读:Backupninja 的不可替代点在「一个配置目录管全部后端 + 统一报告」;如果你的诉求只是单机文件快照,直接用引擎更简单;如果机器多到需要控制台,直接上备份服务器。
7.2 选型建议(如果…则…)
- 如果你的服务器是 Debian/Ubuntu、备份对象多样(文件 + MySQL/PostgreSQL + 系统信息)、想用一套配置文件与日志统一管理 → Backupninja(搭配 rdiff-backup/duplicity/borg 任选为存储后端)。
- 如果只需要本机文件快照、追求简单直接 → 《rdiff-backup 介绍与选型指南》或 《rsnapshot 介绍与选型指南》,二者也都可以反过来被 Backupninja 调度(.rdiff 后缀)。
- 如果要加密增量推送到不可信存储 → duplicity(Backupninja .dup 后端)或 restic/borg 引擎;duplicity 的选型细节见 《Duplicity 介绍与选型指南》。
- 如果是多台客户端需要集中备份、恢复与控制台 → 《UrBackup 2.5.38 介绍与选型指南》、《Bareos 介绍与选型指南》或面向 Proxmox 生态的 《Proxmox Backup Server 4.2 介绍与选型指南》。
- 如果要「调度框架 + 引擎」组合使用,典型组合是 Backupninja 调度 rdiff-backup,二者关系与实践见 《rdiff-backup 介绍与选型指南》与本站 rdiff-backup 专栏的命令详解篇。
八、参考链接
- Debian 包页(版本/依赖/handler 描述):https://packages.debian.org/stable/backupninja (查询日期 2026-10-24)
- Debian Package Tracker(版本迁移/changelog):https://tracker.debian.org/pkg/backupninja (查询日期 2026-10-24)
- 上游代码仓库(GitLab):https://0xacab.org/liberate/backupninja (查询日期 2026-10-24)
- 上游文档站(riseup.net 集体):https://riseup.net/backupninja (查询日期 2026-10-24)
- 随包手册页:backupninja(1)、ninjahelper(1)、backup.d(5)、backupninja.conf(5)(Debian trixie,backupninja 1.2.2-1)