Minarca Server 6.2 配置参数详解
面向 Minarca Server 6.2.5 与 Minarca Client 7.2.0 的配置参数实操手册:服务端覆盖配置文件与 conf.d 分片语法、环境变量与命令行四层来源及优先级、监听端口、日志级别、会话与登录限流、口令强度策略、品牌本地化、邮件通知、仓库维护与配额、SSH 备份通道等参数的改值→重启→验证→还原全过程实测;客户端覆盖 minarcaN.properties 全部键、patternsN 包含/排除语法、调度与暂停机制及 crontab 联动。含未知参数排障与口令表单排障实录。
Minarca Server 6.2 配置参数详解
目标:把 Minarca 服务端(minarca-server 6.2.5)与客户端(minarca-client 7.2.0-1)的配置参数讲透——每个关键参数都给出查看方式、默认值、修改方法,并按「改值 → 重启 → 观察效果 → 还原」的流程在真实环境逐项实测。安装部署步骤见 《Ubuntu 22.04 安装 Minarca 指南(服务端与客户端)》,产品定位与选型背景见 《Minarca 介绍与选型指南》。日常命令操作见 《Minarca 7.2 常用 CLI 命令与工具详解》。
一、环境信息
本文沿用安装篇的「1 台服务端 + 1 台客户端」双机拓扑:
| 角色 | 主机名 | 操作系统 | 软件版本 |
|---|---|---|---|
| 备份服务器 | minarca-server | Ubuntu 22.04.5 LTS | minarca-server 6.2.5 |
| 被备份主机 | client02 | Ubuntu 22.04.5 LTS | minarca-client 7.2.0-1 |
服务端版本实测:
minarca-server --version
minarca-server 6.2.5
dpkg -l minarca-server | tail -1
ii minarca-server 6.2.5 amd64 Minarca is a self-hosted open source data backup software that allows you to manage your computer and server backups for free from a direct online accessible centralized view of your data with easy retrieval in case of displacement, loss or breakage.
客户端版本实测(在 client02 上执行,下同):
minarca -v
minarca 7.2.0
服务端由 systemd 托管(单元名 minarca-server,服务用户 minarca),客户端没有常驻服务进程,靠 crontab 定时触发。这一差异决定了两者的配置生效方式:服务端改配置要重启服务,客户端改配置即时生效。
二、前置条件
- 已按安装篇完成双角色部署:服务端可访问(监听 8080)、客户端已关联服务器并完成过备份。
- 已知 Web 管理员账号。本文示例沿用安装篇的
admin / admin123(官方文档明示的初始口令,生产环境务必修改,见 5.5 节口令策略)。 - 服务端健康检查基线(本节命令在服务端执行):
systemctl is-active minarca-server
active
ss -ltn | grep 8080
LISTEN 0 5 0.0.0.0:8080 0.0.0.0:*
- 管理员凭据可用性检查(通过 RESTful API 验证,返回 JSON 即表示账号可用、仓库在线):
curl -s -u admin:admin123 http://127.0.0.1:8080/api/currentuser/
{"id": 1, "username": "admin", "fullname": "", "email": "admin@ops.example.com", "disk_usage": 383149789184, "disk_quota": 843834499072, "lang": "", "mfa": "", "role": 0, "report_time_range": 0, "repos": [{"name": "client01", "maxage": 0, "keepdays": -1, "ignore_weekday": [], "display_name": "client01", "last_backup_date": "2026-10-21T18:07:38Z", "status": "ok", "encoding": "utf-8"}, {"name": "client02", "maxage": 0, "keepdays": -1, "ignore_weekday": [], "display_name": "client02", "last_backup_date": "2026-10-22T05:51:16Z", "status": "ok", "encoding": "utf-8"}]}
解读:
disk_quota为该用户配额(字节),disk_usage为已用空间;repos数组列出该账号名下仓库及最近备份状态。账号、仓库正常是调参的前提。
三、参数查看与修改方式
3.1 参数清单从哪里来:--help
服务端全部参数可通过主程序 --help 查看(输出较长,此处节选头部 usage 与说明段):
minarca-server --help
usage: minarca-server [-h] [-f FILE] [--database-uri URI] [-d]
[--admin-user USERNAME] [--admin-password USERNAME]
[--default-lang DEFAULT_LANG]
[--default-theme {default,blue,orange,custom}]
[--environment {development,production}]
[--email-encryption {none,ssl,starttls}]
[--email-host HOST] [--email-sender EMAIL]
[--email-notification-time TIME]
[--email-username USERNAME] [--email-password PASSWORD]
[--email-send-changed-notification]
[--email-catch-all EMAIL] [--brand-favicon FAVICON]
[--brand-logo LOGO] [--brand-header-logo HEADER_LOGO]
[--brand-header-name HEADER_NAME]
[--brand-link-color LINK_COLOR]
[--brand-btn-bg-color BTN_BG_COLOR]
[--brand-btn-fg-color BTN_FG_COLOR]
[--brand-btn-rounded BTN_ROUNDED]
[--brand-navbar-color NAVBAR_COLOR]
[--brand-font-family FONT_FAMILY] [--add-missing-user]
[--add-user-default-role {admin,maintainer,user}]
[--add-user-default-userroot ADD_USER_DEFAULT_USERROOT]
[--login-with-email] [--ldap-uri LDAP_URI]
[--ldap-base-dn DN]
[--ldap-scope {base,onelevel,subtree}] [--ldap-tls]
[--ldap-username-attribute ATTRIBUTE]
[--ldap-user-filter LDAP_USER_FILTER]
[--ldap-required-group CN]
[--ldap-group-filter LDAP_GROUP_FILTER]
[--ldap-group-attribute ATTRIBUTE]
[--ldap-group-attribute-is-dn] [--ldap-bind-dn DN]
[--ldap-bind-password PASSWORD] [--ldap-version {2,3}]
[--ldap-network-timeout SECONDS]
[--ldap-timeout SECONDS] [--ldap-encoding ENCODING]
[--ldap-fullname-attribute LDAP_FULLNAME_ATTRIBUTE]
[--ldap-firstname-attribute LDAP_FIRSTNAME_ATTRIBUTE]
[--ldap-lastname-attribute LDAP_LASTNAME_ATTRIBUTE]
[--ldap-email-attribute LDAP_EMAIL_ATTRIBUTE]
[--oauth-provider-name OAUTH_PROVIDER_NAME]
[--oauth-client-id OAUTH_CLIENT_ID]
[--oauth-client-secret OAUTH_CLIENT_SECRET]
[--oauth-scope OAUTH_SCOPE]
[--oauth-auth-url OAUTH_AUTH_URL]
[--oauth-token-url OAUTH_TOKEN_URL]
[--oauth-userinfo-url OAUTH_USERINFO_URL]
[--oauth-userkey-claim OAUTH_USERKEY_CLAIM]
[--oauth-fullname-claim OAUTH_FULLNAME_CLAIM]
[--oauth-firstname-claim OAUTH_FIRSTNAME_CLAIM]
[--oauth-lastname-claim OAUTH_LASTNAME_CLAIM]
[--oauth-email-claim OAUTH_EMAIL_CLAIM]
[--oauth-required-claims OAUTH_REQUIRED_CLAIMS]
[--log-access-file FILE] [--log-file FILE]
[--log-level {ERROR,WARN,INFO,DEBUG}]
[--max-depth DEPTH] [--quota-set-cmd COMMAND]
[--quota-get-cmd COMMAND] [--quota-used-cmd COMMAND]
[--remove-older-time TIME] [--server-host IP]
[--server-port PORT] [--external-url URL]
[--rate-limit-dir FOLDER] [--rate-limit LIMIT]
[--session-idle-timeout MINUTES]
[--session-absolute-timeout MINUTES]
[--session-persistent-timeout MINUTES]
[--ssl-certificate CERT] [--ssl-private-key KEY]
[--tempdir FOLDER] [--disable-ssh-keys]
[--password-min-length PASSWORD_MIN_LENGTH]
[--password-max-length PASSWORD_MAX_LENGTH]
[--password-score PASSWORD_SCORE]
[--latest-version-url LATEST_VERSION_URL]
[--welcome-msg HTML] [--minarca-user-base-dir FOLDER]
[--minarca-shell FILE] [--minarca-auth-options OPTIONS]
[--minarca-remote-host HOST:PORT]
[--minarca-remote-host-identity FOLDER]
[--minarca-help-url URL]
[--minarca-rdiff-backup-extra-args ARGS]
[--minarca-quota-api-url URL] [--version]
Web server to browse and restore backups.
(输出节选:后半部分为逐参数说明,每个参数的帮助文本都标注了对应的环境变量与默认值,本文第四章总览表即以此为基础,并结合逐项实测补充。)
3.2 四层配置来源与优先级
--help 输出的最后一段原文说明了配置来源与优先级:
Args that start with '--' can also be set in a config file
(/etc/minarca/minarca-server.conf or /etc/minarca/conf.d/*.conf or specified
via -f). Configuration file syntax allows: key=value, flag=true. In general,
command-line values override environment variables which override config file
values which override defaults.
即四层来源,从高到低:命令行参数 > 环境变量(MINARCA_*)> 配置文件 > 内置默认值。两点实用结论:
- 每个参数都有同名环境变量(形如
--email-host对应MINARCA_EMAIL_HOST),帮助文本中以[env var: MINARCA_EMAIL_HOST]标注,适合在无法改服务启动参数的场合注入; - 配置文件里写的是去掉
--前缀的键名(--server-port写成server-port=8400),布尔值写flag=true形式。
3.3 配置文件语法与分片
主配置文件为 /etc/minarca/minarca-server.conf,同目录 conf.d/ 下所有 *.conf 会作为分片一并加载(按文件名顺序,后加载的同名键覆盖先加载的)。当前环境的主文件内容:
cat /etc/minarca/minarca-server.conf
# Host name or IP address to bind to.
# If you want to bind to all interface, use 0.0.0.0
# Default: 127.0.0.1
server-host=0.0.0.0
session-dir=/var/lib/minarca
ls -A /etc/minarca/conf.d/
placeholder
解读:安装模板只设置了两项——
server-host=0.0.0.0(监听所有网卡,默认 127.0.0.1 仅本机可访问,远程客户端连不上)、session-dir=/var/lib/minarca(限流计数目录,该键是rate-limit-dir的旧别名,帮助文本明确标注 deprecated,新配置建议直接写rate-limit-dir)。conf.d/里默认只有一个空的placeholder文件,本文的参数实验全部通过在该目录创建分片完成,删掉分片即还原。
推荐用「分片」方式做参数调整,而不是直接改主文件:一个实验一个文件,回滚时删除文件即可。下面的实测统一采用这个模式。
3.4 修改后如何生效与验证
服务端参数在启动时读取,改完必须重启服务:
systemctl restart minarca-server
验证三件套(服务存活、端口监听、页面可访问):
systemctl is-active minarca-server
active
ss -ltn | grep 8080
LISTEN 0 5 0.0.0.0:8080 0.0.0.0:*
curl -s -o /dev/null -w "%{http_code}\n" -u admin:admin123 http://127.0.0.1:8080/api/currentuser/repos/
200
3.5 排障实录:不认识的参数导致服务无法启动
配置文件的键名写错(或把只存在于其他版本的参数抄了进来)时,服务会直接启动失败,这是最容易踩的坑。实测过程(写一个不存在的键 bogus-key-demo):
printf "bogus-key-demo=1\n" > /etc/minarca/conf.d/zz-bogus.conf
systemctl restart minarca-server
systemctl is-active minarca-server
failed
systemctl is-failed minarca-server
failed
查看日志定位原因:
journalctl -u minarca-server --no-pager -n 12 | grep -iE "unrecognized|INVALID" | head -5
Oct 22 06:38:22 minarca-server minarca-server[16983]: minarca-server: error: unrecognized arguments: --bogus-key-demo=1
Oct 22 06:38:22 minarca-server systemd[1]: minarca-server.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
解读:进程把配置文件键名拼回命令行参数去解析,遇到不认识的键报
unrecognized arguments并以退出码 2 退出,systemd 记为status=2/INVALIDARGUMENT。处置:删除问题分片后重启即恢复。
rm -f /etc/minarca/conf.d/zz-bogus.conf
systemctl restart minarca-server
systemctl is-active minarca-server
active
四、参数总览
4.1 服务端参数总览
按下表分组。「默认值」列来自 --help 文本或实测观察;「实测」列标注本文是否做过改值验证(✔=第五章有实测小节;—=仅定义核对,未做效果演示)。
运行与监听
| 参数(配置键) | 说明 | 默认值 | 实测 |
|---|---|---|---|
| server-host | HTTP 监听 IP | 127.0.0.1(模板改为 0.0.0.0) | ✔ |
| server-port | HTTP 监听端口 | 8080(实测观察) | ✔ |
| external-url | 对外访问 URL,仅用于生成邮件通知里的链接 | 无 | — |
| ssl-certificate / ssl-private-key | HTTPS 证书与私钥(官方标注不推荐,建议前置反向代理) | 无 | — |
| environment | development / production,控制出错页面的信息量 | production | — |
| debug(-d) | 调试模式:日志升 DEBUG、页面打印异常栈 | 关闭 | — |
数据与目录
| 参数 | 说明 | 默认值 | 实测 |
|---|---|---|---|
| database-uri | 持久化数据库(SQLite 路径或 PostgreSQL URI) | SQLite,实际落盘 /etc/minarca/rdw.db | — |
| minarca-user-base-dir | 所有备份仓库的根目录,用户根必须在其下 | /backups(实测观察) | — |
| rate-limit-dir(旧名 session-dir) | 登录限流计数文件目录 | 内存(不指定时) | — |
| tempdir | 恢复文件时的临时目录 | TEMPDIR 环境变量或 /tmp | — |
日志
| 参数 | 说明 | 默认值 | 实测 |
|---|---|---|---|
| log-file | 应用日志文件 | /var/log/minarca/server.log | ✔ |
| log-access-file | HTTP 访问日志 | /var/log/minarca/access.log | — |
| log-level | ERROR / WARN / INFO / DEBUG | INFO | ✔ |
会话与登录限流
| 参数 | 说明 | 默认值 | 实测 |
|---|---|---|---|
| rate-limit | 敏感端点每小时请求上限,超限返回 HTTP 429 | 20 次/小时 | ✔ |
| session-idle-timeout | 非持久会话的滑动不活动超时 | 15 分钟 | ✔ |
| session-absolute-timeout | 会话绝对寿命(不随活动续期) | 43200 分钟(30 天) | — |
| session-persistent-timeout | 「记住我」持久会话的滑动超时 | 7 天(登录页实测显示 7 day(s)) | — |
口令策略
| 参数 | 说明 | 默认值 | 实测 |
|---|---|---|---|
| password-min-length | 口令最小长度 | 帮助未标注默认 | ✔ |
| password-max-length | 口令最大长度 | 128 | ✔ |
| password-score | zxcvbn 强度最低分,1–4 | 2 | ✔ |
品牌与本地化
| 参数 | 说明 | 默认值 | 实测 |
|---|---|---|---|
| header-name(brand-header-name) | 应用名,出现在浏览器标题与页头 | Minarca | ✔ |
| default-lang | 界面默认语言(如 fr) | en | ✔ |
| default-theme | default / blue / orange / custom | default | — |
| brand-logo / brand-header-logo / brand-favicon | 登录页、页头、收藏夹图标 | 无 | — |
| brand-link-color / brand-btn-bg-color / brand-btn-fg-color / brand-btn-rounded / brand-navbar-color / brand-font-family | 界面配色与字体(CSS 值) | 无 | — |
| welcome-msg(另有 -ca/-en/-es/-fr/-ru 语言变体) | 替换登录页欢迎语(HTML) | 无 | ✔(未见渲染,见 5.6) |
邮件通知
| 参数 | 说明 | 默认值 | 实测 |
|---|---|---|---|
| email-host | SMTP 服务器,形式 <host>:<port> | 无(未配置则不发信) | ✔ |
| email-sender | 发件人地址 | 无 | ✔ |
| email-encryption | none / ssl / starttls | none | — |
| email-username / email-password | SMTP 认证凭据 | 无 | — |
| email-notification-time | 备份不活跃告警邮件的发送时刻 | 23:00 | — |
| email-send-changed-notification | 敏感信息变更时发通知 | 关闭 | — |
| email-catch-all | 所有通知邮件密送(Bcc)到该地址 | 无 | — |
仓库维护与配额
| 参数 | 说明 | 默认值 | 实测 |
|---|---|---|---|
| remove-older-time | 每日清理过期备份点的调度时刻 | 23:00 | ✔(见 5.8 说明) |
| max-depth | 在用户根目录下查找仓库的最大目录深度 | — | — |
| latest-version-url | 新版本检查地址,置空可禁用 | https://latest.ikus-soft.com/rdiffweb/latest_version | — |
| quota-set-cmd / quota-get-cmd / quota-used-cmd | 对接外部配额命令(设置/查询/用量) | 无 | — |
| minarca-quota-api-url | minarca-quota-api 服务地址 | 无 | — |
SSH 备份通道与 Minarca 专属
| 参数 | 说明 | 默认值 | 实测 |
|---|---|---|---|
| minarca-shell | 处理客户端 SSH 连接的受限 shell 路径 | /opt/minarca-server/minarca-shell | ✔(见 5.9) |
| minarca-auth-options | 写入 authorized_keys 的限制选项 | no-port-forwarding 等(实测观察) | — |
| minarca-remote-host | 客户端关联时下发的 SSH 地址(HOST:PORT) | 由 HTTP URL 推导 | — |
| minarca-remote-host-identity | 下发给客户端做服务器认证的 SSH 主机指纹目录 | 与 Web 同机时自动 | — |
| minarca-rdiff-backup-extra-args(旧名 rdiffbackup-args) | 传给服务端 rdiff-backup 的额外参数 | 无 | — |
| minarca-help-url | 界面「帮助」按钮跳转地址 | 无 | — |
| disable-ssh-keys | 隐藏 Web 端 SSH 公钥管理入口 | 关闭 | ✔(无可见变化,见 5.9) |
| admin-user / admin-password | 初始管理员账号 / SSHA 加密口令 | admin / admin123 | — |
| add-missing-user / add-user-default-role / add-user-default-userroot | LDAP/OAuth 登录时自动建号及默认角色/根目录 | 关闭 | — |
| login-with-email | 允许用邮箱登录(OAuth 必需) | 关闭 | — |
认证集成(LDAP / OAuth)
| 参数组 | 说明 | 实测 |
|---|---|---|
| ldap-uri、ldap-base-dn、ldap-scope、ldap-tls、ldap-version | LDAP 服务器地址、搜索起点(如 dc=my,dc=domain)、范围(base/onelevel/subtree)、TLS、协议版本(默认 3) | 未部署 LDAP,未实测 |
| ldap-username-attribute、ldap-user-filter、ldap-group-filter、ldap-required-group、ldap-group-attribute、ldap-group-attribute-is-dn | 用户名属性(默认 uid)、用户/组过滤、准入组、组成员属性(默认 member) | 同上 |
| ldap-bind-dn、ldap-bind-password、ldap-network-timeout、ldap-timeout、ldap-encoding | 绑定凭据与超时、编码 | 同上 |
| ldap-fullname-attribute、ldap-firstname-attribute、ldap-lastname-attribute、ldap-email-attribute | 用户资料字段映射 | 同上 |
| oauth-provider-name、oauth-client-id、oauth-client-secret、oauth-scope | OAuth 服务商名称与客户端凭据(scope 默认 openid profile email) | 未部署 OAuth,未实测 |
| oauth-auth-url、oauth-token-url、oauth-userinfo-url | 授权/令牌/用户信息端点 | 同上 |
| oauth-userkey-claim、oauth-fullname-claim、oauth-firstname-claim、oauth-lastname-claim、oauth-email-claim、oauth-required-claims | 用户标识与资料字段映射、必要声明 | 同上 |
解读:LDAP/OAuth 参数组只在对接企业目录或单点登录时才需要配置,小团队场景可全部留默认;
add-missing-user打开前务必同时设置add-user-default-userroot(如/backups/{uid[0]}/),否则自动创建的用户没有备份根目录。
4.2 客户端配置文件总览
客户端没有集中式配置命令,配置落在 /etc/minarca/ 目录的一组文件里(按实例编号 N 区分,支持一台机器多个备份实例):
| 文件 | 作用 |
|---|---|
| minarcaN.properties | 实例 N 的关联与调度参数(Java properties 格式) |
| patternsN | 实例 N 的包含/排除规则 |
| id_rsaN、id_rsaN.pub | 实例 N 的 SSH 私钥/公钥(关联时自动生成,公钥上传服务器) |
| known_hostsN | 实例 N 记录的服务器 SSH 主机指纹 |
当前环境(一个远端实例 + 一个本地实例)的文件清单:
ls -A /etc/minarca/
id_rsa0
id_rsa0.pub
known_hosts0
minarca0.properties
minarca1.properties
patterns0
patterns1
properties 键含义总览(实例 0 为远端实例,实例 1 为本地目的端实例,故有 local* 系列键):
| 键 | 实测值(实例 0) | 说明 |
|---|---|---|
| username | admin | 服务器登录账号 |
| repositoryname | client02 | 服务器端仓库名(默认取主机名) |
| remotehost | minarca-server | SSH 目标主机 |
| remoteurl | http://minarca-server:8080 | 服务器 Web 地址 |
| remoterole | 0 | 关联角色 |
| schedule | 24 | 调度间隔小时数(24=每天,1=每小时,见 5.11) |
| configured | True | 是否已完成关联 |
| maxage | 0 | 备份新鲜度告警阈值(小时,0=不告警) |
| ignore_weekday | [] | 忽略调度的星期列表 |
| keepdays | -1 | 保留天数(-1=不自动清理) |
| check_latest_version | True | 是否检查新版本 |
| ignore_hook_errors | False | 钩子脚本失败是否忽略 |
| remote_capabilities | [] | 服务器能力协商结果 |
| pause_until | (无) | 暂停截止时间的 epoch 毫秒值(未暂停则无此键) |
| localmountpoint / localuuid / localrelpath / localcaption | (仅本地实例) | 本地目的端挂载点 / 文件系统 UUID / 相对路径 / 显示名 |
解读:properties 是 Minarca CLI 各子命令的数据源——
schedule、pause、include/exclude等命令本质上就是在改这些键和 patterns 文件。日常优先用 CLI 修改(见 5.11),直接手改文件仅适合批量修补。
五、核心参数分类详解
5.1 监听与访问入口(server-host / server-port)
server-host 已在安装阶段设为 0.0.0.0。这里实测 server-port 改端口:为了让一次重启验证多个参数,创建一个包含 7 个参数的分片(后文 5.3、5.6、5.8、5.9 的验证都基于这次重启):
cat > /etc/minarca/conf.d/zz-doc-test.conf <<CONF
server-port=8400
header-name=Ops Backup Center
welcome-msg=Welcome to the Ops Backup Center
default-lang=fr
log-level=DEBUG
remove-older-time=23:59
disable-ssh-keys=True
CONF
systemctl restart minarca-server
systemctl is-active minarca-server
active
ss -ltn | grep -E "8400|8080"
LISTEN 0 5 0.0.0.0:8400 0.0.0.0:*
解读:8080 不再监听,8400 生效,说明
server-port无需其他配合。验证完毕后删除分片重启,端口回到 8080:
rm -f /etc/minarca/conf.d/zz-doc-test.conf
systemctl restart minarca-server
ss -ltn | grep 8080
LISTEN 0 5 0.0.0.0:8080 0.0.0.0:*
注意:改端口后,所有客户端的
remoteurl、防火墙规则、反向代理目标都要同步调整,否则客户端关联检查(Verifying connection...)会失败。
5.2 数据与目录(database-uri / minarca-user-base-dir / rate-limit-dir / tempdir)
database-uri:账户、仓库元数据全在这里。帮助原文:默认使用 SQLite 内嵌数据库,也支持 PostgreSQL(URI 形如 postgresql://user:pass@10.255.1.34/dbname)。本环境实际落盘文件:
ls -la /etc/minarca
total 1216
drwxr-x--- 3 minarca minarca 4096 Oct 21 17:51 .
drwxr-xr-x 1 root root 4096 Oct 21 18:04 ..
drwxr-x--- 2 minarca minarca 4096 Oct 21 17:49 conf.d
-rw-r----- 1 minarca minarca 160 Apr 21 2025 minarca-server.conf
-rw-r--r-- 1 minarca minarca 4096 Oct 21 17:51 rdw.db
-rw-r--r-- 1 minarca minarca 32768 Oct 21 18:12 rdw.db-shm
-rw-r--r-- 1 minarca minarca 1182472 Oct 21 18:11 rdw.db-wal
(安装完成当天的目录基线,与安装篇一致;rdw.db 会随使用增长,并伴随 rdw.db-shm、rdw.db-wal 两个 SQLite 附属文件——迁移备份服务器时三者要一起拷贝。)
minarca-user-base-dir:备份仓库根。每个用户的仓库必须位于该目录之下(帮助原文:any user_root outside this repository will be refused)。本环境为安装默认的 /backups,用户 admin 的根目录是 /backups/admin,仓库 client02 实际落在 /backups/admin/client02/。该参数还决定默认配额:5.8 节 API 实测 disk_quota=843834499072 字节(约 786 GiB),与 /backups 分区容量一致——未配置外部配额命令时,配额取用户根目录所在文件系统的大小。
rate-limit-dir(安装模板里写的旧名 session-dir):登录限流的计数文件目录。帮助原文标注:不指定时计数只保存在内存里;指定后以 ratelimit-<哈希>.txt 文件形式持久化在该目录(本环境为 /var/lib/minarca,文件名按来源地址哈希生成)。持久化的意义是重启服务后限流计数不丢。
tempdir:恢复文件时的临时空间。帮助原文:默认取 TEMPDIR 环境变量或 /tmp;若系统盘空间紧张而备份盘宽裕,可指向备份盘(如 /backups/tmp)。
5.3 日志(log-file / log-access-file / log-level)
日志三件套的实际位置:/var/log/minarca/server.log(应用日志,含调度器)、access.log(HTTP 访问日志)、shell.log(SSH 备份通道日志,由 minarca-shell 写,路径跟随 log-file 所在目录)。
log-level 默认 INFO。改为 DEBUG 后,server.log 出现大量框架级调试行(实测 grep 计数 17 条 DEBUG,节选):
grep -m 3 "DEBUG" /var/log/minarca/server.log
[2026-10-22 06:04:18,102][DEBUG ][-][-][MainThread][tzlocal] /etc/timezone found, contents:
[2026-10-22 06:04:18,102][DEBUG ][-][-][MainThread][tzlocal] /etc/localtime found
[2026-10-22 06:04:18,103][DEBUG ][-][-][MainThread][tzlocal] 2 found:
删除分片并重启即恢复默认 INFO 级别。生产环境保持 INFO 即可,排障时临时开 DEBUG。
shell.log 的行格式为 [时间][级别][来源IP][用户][PID][模块] 内容,实测样例(这是排查「客户端连不上/备份中断」的第一手材料):
tail -3 /var/log/minarca/shell.log
[2026-10-22 05:52:21,699][INFO ][10.89.66.3][admin][PID:11307][__main__] rdiff-backup terminated successfully
[2026-10-22 06:19:50,009][INFO ][10.89.66.3][admin][PID:16278][__main__] running command [/usr/bin/rdiff-backup-2.2 --server] in jail [/backups/admin] for: minarca/7.2.0 rdiff-backup/2.2.6 (Linux 6.8.0-138-generic x86_64)
[2026-10-22 06:19:50,145][INFO ][10.89.66.3][admin][PID:16278][__main__] rdiff-backup terminated successfully
解读:
running command [/usr/bin/rdiff-backup-2.2 --server] in jail [/backups/admin] for: minarca/7.2.0 rdiff-backup/2.2.6 (Linux 6.8.0-138-generic x86_64)一行信息量很大——服务端按客户端上报的 rdiff-backup 版本(2.2.6)选择对应后端(rdiff-backup-2.2),并在以/backups/admin为可写根的隔离环境中执行(详见 5.9)。
5.4 会话与登录限流(session-idle-timeout / session-persistent-timeout / rate-limit)
session-idle-timeout(默认 15 分钟):登录页的「记住我」复选框标题会动态显示会话时长。默认值下的页面原文(curl 登录页实测):
curl -s http://127.0.0.1:8080/login/ | grep -o "your session will last[^\"']*" | head -1
your session will last for 0 hour(s).
(15 分钟不足 1 小时,向上取整显示为 0 hour(s);同一行还显示持久会话时长 Check this to stay signed in for 7 day(s).,对应默认 7 天的 session-persistent-timeout。)
把 session-idle-timeout=120 写入分片重启后:
curl -s http://127.0.0.1:8080/login/ | grep -o "your session will last[^\"']*" | head -1
your session will last for 2 hour(s).
(120 分钟 = 2 小时,显示随之变化,参数生效可观测。)还原后重新显示 0 hour(s).。
rate-limit(默认 20 次/小时):登录页与 RESTful API 等敏感端点的请求限速,帮助原文明确这是防暴力破解措施,超限返回 HTTP 429。实测把它压到 2 次/小时:写入分片、重启,并清空计数文件后再次重启(确保从零计数):
printf "rate-limit=2\n" > /etc/minarca/conf.d/zz-rl.conf
systemctl restart minarca-server
systemctl is-active minarca-server
active
rm -f /var/lib/minarca/ratelimit-*.txt
systemctl restart minarca-server
连做两次错误口令登录,第三次用正确口令登录:
curl -s -d "login=admin&password=badpass-one" -o /dev/null -w "bad-login-1=%{http_code}\n" http://127.0.0.1:8080/login/
bad-login-1=200
curl -s -d "login=admin&password=badpass-two" -o /dev/null -w "bad-login-2=%{http_code}\n" http://127.0.0.1:8080/login/
bad-login-2=200
curl -s -d "login=admin&password=admin123" -o /tmp/rl429.html -w "good-login-locked=%{http_code}\n" http://127.0.0.1:8080/login/
good-login-locked=429
第 3 次请求即使口令正确也被拒绝,429 响应页面含标题(实测):
grep -o "<h2>[^<]*</h2>" /tmp/rl429.html | head -1
<h2>429 Too Many Requests</h2>
删除分片(恢复默认 20 次/小时)并重启后,同一账号正常登录恢复 303(登录成功跳转):
curl -s -d "login=admin&password=admin123" -o /dev/null -w "good-login-after=%{http_code}\n" http://127.0.0.1:8080/login/
good-login-after=303
解读:限流按「来源 + 端点」计数且持久化在
rate-limit-dir,错误口令尝试和正常登录共用配额——运维时如果团队共享出口 IP,20 次/小时的默认值可能误伤,可适当调大;被锁后等待计数窗口滚过或清理对应ratelimit-*.txt计数文件。
5.5 口令策略(password-min-length / password-max-length / password-score)
口令策略在 Web 表单修改口令时校验。先把 password-min-length=12 写入分片重启,尝试把 admin 的口令改成 6 位的 abc123:
printf "password-min-length=12\n" > /etc/minarca/conf.d/zz-minlen.conf
systemctl restart minarca-server
curl -s -c /tmp/cml -d "login=admin&password=admin123" -o /dev/null -w "login=%{http_code}\n" http://127.0.0.1:8080/login/
login=303
curl -s -b /tmp/cml -d "action=set_password¤t=admin123&new=abc123&confirm=abc123&set_password=" http://127.0.0.1:8080/prefs/general/ -o /tmp/ml.html -w "HTTP=%{http_code}\n"
HTTP=200
grep -o "Password must[^<]*" /tmp/ml.html
Password must have between 12 and 128 characters.
curl -s -o /dev/null -w "api=%{http_code}\n" -u admin:admin123 http://127.0.0.1:8080/api/currentuser/repos/
api=200
解读:返回 200(表单页重渲染)而非 303,页面告警框给出
Password must have between 12 and 128 characters.,API 用旧口令仍返回 200——口令没有被改掉。这条报错同时说明默认的 password-max-length 为 128。
password-score(默认 2):基于 zxcvbn 口令强度评分(1–4,帮助原文标注)。删除上面的分片恢复默认策略后,尝试把口令改成常见的 q1w2e3r4:
rm -f /etc/minarca/conf.d/zz-minlen.conf
systemctl restart minarca-server
curl -s -c /tmp/cw -d "login=admin&password=admin123" -o /dev/null -w "login=%{http_code}\n" http://127.0.0.1:8080/login/
login=303
curl -s -b /tmp/cw -d "action=set_password¤t=admin123&new=q1w2e3r4&confirm=q1w2e3r4&set_password=" http://127.0.0.1:8080/prefs/general/ -o /tmp/wk.html -w "HTTP=%{http_code}\n"
HTTP=200
grep -o "Password too weak[^<]*" /tmp/wk.html
Password too weak. This is a very common password. Add another word or two. Uncommon words are better.
curl -s -o /dev/null -w "q1w2e3r4-api=%{http_code}\n" -u admin:q1w2e3r4 http://127.0.0.1:8080/api/currentuser/repos/
q1w2e3r4-api=401
curl -s -o /dev/null -w "admin123-intact=%{http_code}\n" -u admin:admin123 http://127.0.0.1:8080/api/currentuser/repos/
admin123-intact=200
解读:q1w2e3r4 被默认策略拒绝(200 + too weak 告警 + API 401),原口令 admin123 未受影响——安装篇第八章「弱口令 q1w2e3r4 会被拒绝」即来自这条策略。
初始口令 admin123 同样过不了表单校验。在默认策略下先把口令改为强口令 T3mp-Passphrase-2026#x(该序列取自 5.7 节的邮件实验,中间还包含为 admin 设置邮箱的步骤):
curl -s -c /tmp/cm -d "login=admin&password=admin123" -o /dev/null -w "login=%{http_code}\n" http://127.0.0.1:8080/login/
login=303
curl -s -b /tmp/cm -d "action=set_password¤t=admin123&new=T3mp-Passphrase-2026%23x&confirm=T3mp-Passphrase-2026%23x&set_password=" http://127.0.0.1:8080/prefs/general/ -o /dev/null -w "chg1=%{http_code}\n"
chg1=303
再尝试把口令改回初始口令 admin123:
curl -s -c /tmp/cn -d "login=admin&password=T3mp-Passphrase-2026%23x" -o /dev/null -w "login=%{http_code}\n" http://127.0.0.1:8080/login/
login=303
curl -s -b /tmp/cn -d "action=set_password¤t=T3mp-Passphrase-2026%23x&new=admin123&confirm=admin123&set_password=" http://127.0.0.1:8080/prefs/general/ -o /dev/null -w "chg2=%{http_code}\n"
chg2=200
curl -s -o /dev/null -w "admin123-api=%{http_code}\n" -u 'admin:admin123' http://127.0.0.1:8080/api/currentuser/repos/
admin123-api=401
解读:admin123 本身就是 zxcvbn 评分低于 2 的常见口令——它能作为初始口令登录(安装时直接写入数据库,不走表单校验),但一旦改掉就无法通过表单设回去。因此首次登录后应立即改成强口令并妥善保管,不要指望「改回 admin123」。
排障实录:表单字段不完整导致「改了但没改」。修改口令的 POST 必须携带隐藏域 action=set_password 与 current(当前口令)字段,漏掉时服务端返回 200 且口令纹丝不动。抓取 /prefs/general/ 页面可见完整表单结构(实测):
curl -s -c /tmp/cf -d "login=admin&password=admin123" -o /dev/null -w "login=%{http_code}\n" http://127.0.0.1:8080/login/
login=303
curl -s -b /tmp/cf http://127.0.0.1:8080/prefs/general/ | grep -E 'name="action"|name="current"|name="new"|name="confirm"'
<input name="action" type="hidden" value="set_profile_info">
<input name="action" type="hidden" value="set_password">
<input class="form-control" name="current" required type="password" value="">
<input class="form-control" name="new" required type="password" value="">
<input class="form-control" name="confirm" required type="password" value="">
<input name="action" type="hidden" value="update_repos">
解读:同一页面有三个表单(资料、口令、仓库设置),靠隐藏域
action区分,口令表单还要带current字段做身份复核。判别成败的方法:成功=303,失败/未登录=200,再用curl -u 账号:新口令打一次 API 做最终确认。
5.6 品牌与本地化(header-name / default-lang / welcome-msg)
仍用 5.1 的分片(含 header-name=Ops Backup Center 与 default-lang=fr)。重启后登录页标题与页头 Logo 文本都变成自定义应用名(实测):
curl -s http://127.0.0.1:8400/login/ | grep -n "Ops Backup Center" | head -2
9: - Ops Backup Center
55: <img alt="Ops Backup Center"
default-lang=fr 使页面语言与文案切换为法语(实测登录页前 12 行):
curl -s http://127.0.0.1:8400/login/ | head -12
<!DOCTYPE html>
<html lang="fr">
<head>
<title>
Connexion
- Ops Backup Center
</title>
<meta charset="utf-8" />
<meta content="noindex" name="robots" />
curl -s http://127.0.0.1:8400/login/ | grep -ioE "connecter|identifier" | head -2
connecter
解读:
<html lang="fr">+ 标题Connexion(法语「登录」)+ 按钮connecter,语言参数直接生效;header-name同时作用于标题与页头图标 alt 文本。两者叠加说明分片内多个参数一次性生效。
welcome-msg:定义了登录页欢迎语(支持按语言变体分别设置)。本环境实测在登录页 grep 自定义欢迎语文本 Welcome to the Ops Backup Center 无任何命中(未渲染出来),故此处不给效果描述,仅保留参数定义供参考。default-theme、brand-* 系列为界面配色/图标类参数,按 CSS 值填写即可,本文未逐一验证显示效果。
5.7 邮件通知(email-host / email-sender)
未配置 SMTP 时,触发性邮件(口令变更通知等)只记日志不发信。实测在 admin 账号已配置邮箱的前提下修改口令,server.log 出现(实测节选):
[2026-10-22 06:07:18,607][INFO ][127.0.0.1][admin][CP Server Thread-6][cherrypy.error.130827192286720] SMTP cannot send email because SMTP Server is not configured
配置一个不可达的 SMTP 地址来观察发信链路。写入分片 email-host=127.0.0.1:2525、email-sender=minarca@ops.example.com 并重启,登录后为 admin 设置邮箱(表单 action=set_profile_info):
printf "email-host=127.0.0.1:2525\nemail-sender=minarca@ops.example.com\n" > /etc/minarca/conf.d/zz-doc-test.conf
systemctl restart minarca-server
curl -s -c /tmp/cm -d "login=admin&password=admin123" -o /dev/null -w "login=%{http_code}\n" http://127.0.0.1:8080/login/
login=303
curl -s -b /tmp/cm -d "action=set_profile_info&username=admin&fullname=&email=admin%40ops.example.com&set_profile_info=" http://127.0.0.1:8080/prefs/general/ -o /dev/null -w "setemail=%{http_code}\n"
setemail=303
curl -s -b /tmp/cm -d "action=set_password¤t=admin123&new=T3mp-Passphrase-2026%23x&confirm=T3mp-Passphrase-2026%23x&set_password=" http://127.0.0.1:8080/prefs/general/ -o /dev/null -w "chg1=%{http_code}\n"
chg1=303
口令变更成功(303)触发通知邮件,server.log 记录发信动作与失败堆栈(实测):
[2026-10-22 06:06:46,516][INFO ][127.0.0.1][anonymous][CP Server Thread-4][rdiffweb.core.notification] User admin login to web application
[2026-10-22 06:06:46,570][INFO ][127.0.0.1][admin][CP Server Thread-6][rdiffweb.core.notification] Email address of the user admin has been changed
[2026-10-22 06:06:46,570][INFO ][127.0.0.1][admin][CP Server Thread-6][rdiffweb.core.notification] can't sent mail to user [admin] without an email
[2026-10-22 06:06:46,692][INFO ][127.0.0.1][admin][CP Server Thread-8][rdiffweb.core.notification] User's password admin changed
Traceback (most recent call last):
File "apscheduler/executors/base.py", line 131, in run_job
File "rdiffweb/plugins/smtp.py", line 132, in _send_message
File "smtplib.py", line 255, in __init__
File "smtplib.py", line 341, in connect
File "smtplib.py", line 312, in _get_socket
File "socket.py", line 865, in create_connection
File "socket.py", line 850, in create_connection
ConnectionRefusedError: [Errno 111] Connection refused
解读:三个可观测点——① 变更邮箱/口令都会触发通知任务;② 收件地址缺失时记
can't sent mail to user [admin] without an email(变更类通知发给变更前的旧地址,当时旧地址为空);③ SMTP 不可达时在rdiffweb/plugins/smtp.py的_send_message抛ConnectionRefusedError。生产配置时先确认服务器到 SMTP 端口的网络连通,再填 email-host。测完删除分片重启还原:
rm -f /etc/minarca/conf.d/zz-doc-test.conf
systemctl restart minarca-server
systemctl is-active minarca-server
active
ss -ltn | grep 8080
LISTEN 0 5 0.0.0.0:8080 0.0.0.0:*
5.8 仓库维护与配额(remove-older-time / max-depth / 配额)
remove-older-time(默认 23:00):每日过期备份点清理任务的触发时刻。该调度任务确实存在——server.log 中调度器启动日志可见(实测节选):
[2026-10-22 06:04:15,419][INFO ][-][-][MainThread][apscheduler.scheduler] Added job "rdiffweb.core.remove_older:cherrypy.remove_older.remove_older_job" to job store "default"
实测把它改为 23:59 后,日志中未出现与该时刻直接对应的可观控行(到点执行才可见),故只保留定义:清理的保留策略由仓库级参数决定(客户端 properties 中的 keepdays=-1 表示不按天数清理、maxage=0 表示不按新鲜度告警,均可按仓库在 Web 端或客户端设置)。
max-depth:在用户根目录下递归查找仓库的最大深度,仓库按子目录组织时需要调大。
配额:未配置 quota-set-cmd/quota-get-cmd/quota-used-cmd 外部命令时,配额取用户根目录所在文件系统大小(见 5.2)。API 实测(disk_quota=843834499072 ≈ 786 GiB,与安装篇 df -h /backups 的 786G 一致)。minarca-quota-api-url 用于对接 minarca-quota-api 服务做集中配额管理。
5.9 SSH 备份通道与 Minarca 专属参数
客户端到服务端的备份走 SSH,但登录 shell 被替换成受限的 minarca-shell。用户首次关联时,服务端自动把该用户的 SSH 公钥写入 /backups/.ssh/authorized_keys,每行是一条强制命令(实测内容前缀,行尾截断):
command="export MINARCA_USERNAME='admin' MINARCA_USER_ROOT='/backups/admin';/opt/minarca-server/minarca-shell",no-port-forwarding,no-X11-forwarding,no-agent-for
解读:
command=强制该公钥发起的 SSH 会话只能执行 minarca-shell(并注入用户名与用户根两个环境变量),no-port-forwarding等选项封掉端口/代理转发——对应minarca-auth-options参数的默认效果。客户端无论发什么命令,最终都落到 minarca-shell 里受控执行。
minarca-shell 的工作方式(shell.log 实测,见 5.3):以用户根目录(如 /backups/admin)为唯一可写根构建隔离环境,把 /bin、/lib、/lib64、/usr、/opt 只读挂入后 chroot 执行 rdiff-backup --server。服务端并存三个版本的 rdiff-backup 后端(dpkg 实测节选):
dpkg -l | grep rdiff-backup
ii rdiff-backup-1.2 1.2.8-8 amd64 remote incremental backup
ii rdiff-backup-2.0 2.0.5-12 amd64 Backup and Restore utility, easy to use, efficient, locally and remotely usable
ii rdiff-backup-2.2 2.2.6-13 amd64 Backup and Restore utility, easy to use, efficient, locally and remotely usable
按客户端上报的版本自动选择(客户端 7.2.0 自带 rdiff-backup 2.2.6,服务端即用 rdiff-backup-2.2 承接)。
相关参数:
- minarca-remote-host:客户端关联时下发的 SSH 地址。Web 服务与 SSH 服务不在同一台或 SSH 端口非 22 时必须配置(形式
ssh.example.com:2222),否则客户端拿到的连接目标不可达。 - minarca-remote-host-identity:下发服务器 SSH 主机指纹的目录;SSH 服务与 Web 服务分离部署时需要指定。
- minarca-rdiff-backup-extra-args:追加给服务端 rdiff-backup 的参数(如
--no-compression)。 - disable-ssh-keys:隐藏 Web 端 SSH 公钥管理页的添加入口。实测开启后访问
/prefs/sshkeys/页面仍返回 200 且无权限类报错,未观察到可见变化,故不做效果声明,参数定义以 --help 为准(hide SSH Key management to avoid users to add or remove SSH Key)。 - minarca-help-url:界面「帮助」按钮的自定义跳转地址。
排障提示:若客户端报
The remote server could not create the necessary security context(退出码 39),优先检查服务端/backups、/backups/<user>、/backups/.ssh及authorized_keys的属主是否为 minarca 用户——sshd 对 authorized_keys 属主/权限有严格校验(Authentication refused: bad ownership or modes),属主不对时认证直接失败;隔离环境创建也需要运行账号具备相应的内核权限。
5.10 认证集成参数(LDAP / OAuth)
LDAP 与 OAuth 两组参数的完整清单见 4.1 总览表。最小可用配置示例(凭 --help 定义整理,本环境未部署目录服务,未做连通实测):
ldap-uri=ldap://ldap.example.com:389
ldap-base-dn=dc=my,dc=domain
ldap-user-filter=(objectClass=person)
解读:配置 ldap-uri 后用户认证即转由 LDAP 校验;要允许「首次登录自动建号」需同时打开
add-missing-user并配好默认角色与用户根目录。OAuth 同理,且必须打开login-with-email(帮助原文:This option is required when using OAuth)。接入前建议先用ldapsearch等工具在服务器上验证目录可达与过滤条件有效。
5.11 客户端配置详解(/etc/minarca/)
多实例机制:minarca configure 远端关联创建实例 0;已有关联时再执行 minarca configure -d <本地目录> 会新建一个本地目的端实例(编号顺延)。本地实例不依赖服务器,把备份存到本机目录。实测创建本地实例(目的端 /srv/localbak,名 local-dest):
minarca configure -d /srv/localbak -n local-dest
Linked successfully
生成的实例 1 配置文件全文:
cat /etc/minarca/minarca1.properties
#Thu Oct 22 05:52:20 UTC 2026
repositoryname=local-dest
schedule=24
configured=True
pause_until=1792651939269
check_latest_version=True
localmountpoint=/
localuuid=d3d87d74-2704-46f8-a5e8-f571274ec400
localrelpath=srv/localbak
localcaption=localbak
ignore_hook_errors=False
解读:
localuuid/localrelpath/localcaption记录目的端文件系统标识与位置;pause_until=1792651939269是创建时刻 +1 小时的 epoch 毫秒值——新建本地实例默认暂停 1 小时(避免关联完成立即触发全量备份),状态页会显示Paused until。
远端实例的 properties(实例 0 全文,见 4.2 总览表的逐键说明):
cat /etc/minarca/minarca0.properties
#Thu Oct 22 05:52:21 UTC 2026
username=admin
repositoryname=client02
remotehost=minarca-server
remoteurl=http\://minarca-server\:8080
remoterole=0
schedule=24
configured=True
maxage=0
ignore_weekday=[]
keepdays=-1
check_latest_version=True
ignore_hook_errors=False
remote_capabilities=[]
包含/排除规则 patternsN。语法:+ 开头=包含,- 开头=排除,# 注释,支持 *、? 通配(help 原文:May contain * or ? wildcard)。实例 0 当前文件尾部(实测):
tail -6 /etc/minarca/patterns0
# Hidden temporary files
-**/.~*
# Vim temporary files
-**/*~
+/srv/data
-**/*.tmp
用 CLI 追加排除规则并核对生效视图:
minarca exclude '**/*.tmp' --instance 0
(执行后 patterns0 尾部即出现上面的 -**/*.tmp 行。)查看合并默认规则后的生效清单:
minarca patterns --instance 0
-/dev
-/proc
-/sys
-/tmp
-/run
-/mnt
-/media
-**/lost+found
-**/.~*
-**/*~
+/srv/data
-**/*.tmp
解读:CLI 视图 = 文件规则 + 内置默认规则(/dev、/proc、/sys、/tmp、/run、/mnt、/media、lost+found 等永不备份)。
+规则放在成片-规则之后即可把例外目录捞回来(如+/srv/data)。实例 1 的 patterns1 还多一条默认头部+/etc/minarca/patterns*,保证客户端自己的规则文件随备份走。
调度参数 schedule。值=间隔小时数。实测切换与还原:
minarca schedule --hourly
(该命令无标准输出,退出码 0。)
grep schedule /etc/minarca/minarca0.properties
schedule=1
minarca status | grep frequency
Backup frequency: every 1h
Backup frequency: every 1h
minarca schedule --daily
(该命令无标准输出,退出码 0。)
grep schedule /etc/minarca/minarca0.properties
schedule=24
解读:
schedule --hourly写入schedule=1,--daily写回schedule=24,--weekly对应 168。schedule/unschedule子命令同时维护 crontab——当前环境的计划任务(实测):
crontab -l
7,22,37,52 * * * * /opt/minarca/minarca backup
暂停参数 pause_until。pause -d <小时数> 把暂停截止时间写进 properties(epoch 毫秒)。实测对实例 0 暂停 6 小时:
minarca pause -d 6 --instance 0
(该命令无标准输出,退出码 0。)
grep pause_until /etc/minarca/minarca0.properties
pause_until=1792669940957
minarca status | grep -B 1 "Paused"
Backup instance: client02
Paused until: 2026-10-22T11:52:20+0000
(05:52 UTC 执行 +6 小时 = 11:52 UTC,与显示一致。)解除暂停恢复自动备份:
minarca pause --clear
(该命令无标准输出,退出码 0。)验证 properties 中 pause 键已清零:
grep -c pause /etc/minarca/minarca0.properties
0
当前实例状态总览(本节所有实测完成后的状态,作为对照基线):
minarca status
Verifying connection...
----------------------------------------------------
Backup instance: client02
Identifier: 0
Remote server: minarca-server
Backup frequency: every 24h
Connectivity status: Connected
Last successful backup: 2026-10-22T05:51:19+0000
Last backup date: 2026-10-22T05:51:19+0000
Last backup status: SUCCESS
----------------------------------------------------
Backup instance: local-dest
Identifier: 1
Local device: localbak
Paused until: 2026-10-22T06:52:19+0000
Backup frequency: every 24h
Connectivity status: Connected
Last successful backup: Never
Last backup date: Never
Last backup status: UNKNOWN
解读:实例 0 已完成备份闭环(SUCCESS);实例 1 尚未到触发点(UNKNOWN)且处于创建后的默认 1 小时暂停中。参数调优后看
Last backup status是否仍为 SUCCESS 是最直接的回归验证。
六、生产配置模板
以下模板按「小团队单机服务端」场景整理,写入 /etc/minarca/conf.d/production.conf 后重启生效。所有键名均与 6.2.5 的 --help 一致,标注「实测」的为本文验证过的项:
# ---- 监听 ----
# 监听所有网卡(实测:默认 127.0.0.1 仅本机可访问)
server-host=0.0.0.0
# 端口按需调整,改后需同步客户端 remoteurl 与防火墙(实测 8400 生效)
server-port=8080
# ---- 日志 ----
log-level=INFO
# ---- 会话与限流 ----
# 默认 20 次/小时;团队共享出口 IP 时可调大
rate-limit=60
# 登录会话不活动超时(默认 15 分钟,按安全基线调整)
session-idle-timeout=30
# ---- 口令策略 ----
# zxcvbn 最低分 1-4,默认 2;要求更强口令可提到 3(实测默认策略拒绝常见弱口令)
password-score=3
password-min-length=10
# ---- 邮件通知 ----
email-host=smtp.example.com:587
email-sender=minarca@example.com
email-encryption=starttls
email-username=minarca@example.com
email-password=CHANGE-ME
email-notification-time=22:00
# ---- SSH 备份通道 ----
# SSH 与 Web 不同端口/不同机时必须下发正确地址
minarca-remote-host=backup.example.com:22
解读:
CHANGE-ME为唯一需人工替换的值(SMTP 密码);email-*与 LDAP/OAuth 参数在无对应设施时应整段删除而非留空键(留空键无副作用,但保留未用参数会误导后续维护)。配置完成后用systemctl restart minarca-server加载,并按 3.4 节三件套验证。
客户端侧的生产建议:schedule 按数据变化频率选择(数据库目录建议 hourly);把备份目的目录、数据库转储目录用 include 显式加入;对挂载点、缓存目录用 exclude 收窄;多实例场景远端与本地各一个实例互为冗余。改完任一参数跑一次 minarca backup --force 做闭环验证(命令详解见 《Minarca 7.2 常用 CLI 命令与工具详解》)。
七、常见问题
Q1:改了配置文件为什么不生效?
服务端参数在启动时读取,必须 systemctl restart minarca-server。重启后用 systemctl is-active minarca-server(应输出 active)与 ss -ltn | grep 8080 双重确认。客户端参数则相反——CLI 子命令即时生效,无需重启任何进程。
Q2:重启后服务起不来,journalctl 报 unrecognized arguments?
配置文件里写了 6.2.5 不认识的键。实测记录:minarca-server: error: unrecognized arguments: --bogus-key-demo=1,随后 status=2/INVALIDARGUMENT。找到最近改动的 conf.d/*.conf 分片删除(或改正键名,键名以 minarca-server --help 为准),再重启即恢复。这也是优先用「一个实验一个分片」的原因。
Q3:登录返回 429 Too Many Requests?
触发了 rate-limit(默认 20 次/小时,错误尝试与正常登录共用配额,按来源计数且重启不丢)。等待计数窗口滚过,或清理 /var/lib/minarca/ratelimit-*.txt 中对应的计数文件后重启服务;内网 Scanner 或监控探针高频探测登录页也会触发,应将其排除或调大 rate-limit。
Q4:口令总是改不成功?
三种实测过的原因:① 长度不足——报 Password must have between 12 and 128 characters.;② 强度不足——报 Password too weak. This is a very common password. Add another word or two. Uncommon words are better.(默认 score=2 即拒绝 q1w2e3r4 这类常见弱口令,也拒绝把口令改回初始值 admin123——初始口令写库时不走表单校验,一旦改掉在默认策略下就设不回去,见 5.5);③ 表单字段不全——POST 必须带隐藏域 action=set_password 与 current 字段,缺了返回 200 且口令不变。判别标准:303=成功,200=失败重渲染,最后用 curl -u 账号:新口令 打 API 确认。
Q5:客户端报 The remote server could not create the necessary security context(退出码 39)?
服务端为客户端构建 rdiff-backup 隔离执行环境失败。按顺序排查:/backups、/backups/<user>、/backups/.ssh 的属主与权限(sshd 校验 authorized_keys 属主,报 Authentication refused: bad ownership or modes 时认证都过不去);运行账号是否能创建用户命名空间(部分发行版默认限制非特权 user namespace,需按发行版文档放开)。服务端 /var/log/minarca/shell.log 会记录 fail to create rdiff-backup jail 类错误,是定位第一现场。
Q6:邮件发不出去?
两种日志:SMTP cannot send email because SMTP Server is not configured(没配 email-host)与 ConnectionRefusedError: [Errno 111] Connection refused(email-host 指向的 SMTP 不可达,堆栈出自 smtp 插件 _send_message)。先在服务器上验证到 SMTP 主机端口的连通性,再检查 email-encryption 与服务商要求是否匹配(587 端口通常配 starttls)。另外确认收通知的用户已在 Web 端填写邮箱,否则记 can't sent mail to user [admin] without an email。
Q7:客户端状态一直 FAILURE 或 Not connected?
先看实例 0 的 remoteurl/remotehost 是否与服务器当前地址一致(改过 server-port 必须重新关联或手改 properties);再在服务端查 shell.log 与 journalctl -u minarca-server;最后在客户端跑 minarca status 看 Connectivity status 与 Details 字段的错误码。暂停中的实例显示 Paused until,到点自动恢复,不是故障。
八、参考链接
- 官方安装文档:https://minarca.org/en_CA/doc/installation
- 官方下载页:https://minarca.org/en_CA/download
- 官方 APT 仓库(jammy):https://nexus.ikus-soft.com/repository/apt-release-jammy/
- 源码仓库:https://gitlab.com/ikus-soft/minarca
- 口令强度评分算法 zxcvbn:https://github.com/dropbox/zxcvbn
- 相关篇目:《Minarca 介绍与选型指南》、《Ubuntu 22.04 安装 Minarca 指南(服务端与客户端)》、《Minarca 7.2 常用 CLI 命令与工具详解》