☰
你的网站备份只存一块盘?把 1Panel 的备份目标换成 RustFS
2026/10/28 1:50:27 网站建设 项目流程

网站文件、数据库、证书、面板自己的配置,全躺在一台服务器的盘上。1Panel 的备份功能其实早就备好了出路:官方文档写明备份账号支持对接云端存储,官网也把"一键备份与恢复,并可对接多种云端存储"挂在特性列表里。但相当一部分人装完面板,备份任务的目标就一直停在服务器本地盘上。盘一坏、机器被回收,备份和数据一起陪葬。这篇把这条出路走通:让 1Panel 的计划任务把备份推到 RustFS 上。RustFS 是面向 AI 时代、从零原生打造的高性能分布式对象存储,100% 兼容 S3 协议,Apache 2.0 开源。上一篇《装完面板就不敲命令:在 1Panel 里点两下,RustFS 就跑起来了》我们把它装好了,这篇直接接着用。

动手前,这三样东西先备齐

第一,一台按上一篇装好的 RustFS,记下它的 S3 API 地址和那对管理员凭证。默认端口是 9000 走 S3 API、9001 走 Web 控制台,两个端口记清楚:9000 给程序,9001 给人;装在 1Panel 里的容器以实际映射端口为准。第二,能登录的 1Panel 面板,计划任务和备份账号都在里面配。第三,想清楚 RustFS 放哪儿。它和 1Panel 同机也能用,但那样只是把数据从一块盘挪到另一块盘,机器没了照样全没;放在另一台机器上,才谈得上备份圈常说的 3-2-1 法则(三份副本、两种介质、一份异地)里"异地"那一份。

RustFS 侧:给备份一个桶和一把受限密钥

先建桶。浏览器开控制台(默认http://服务器IP:9001),登录后在首页创建桶,名字取1panel-backup,后面 1Panel 那边要用。

密钥别直接拿管理员那对。RustFS 的 IAM 文档写明:根凭证请只用来引导部署,日常活交给 IAM 用户和服务账户。备份这事给一把专用密钥,万一 1Panel 服务器被攻破,泄漏出去的密钥也只能碰备份桶,摸不到你桶里的其他数据。

做法分两步。第一步,在控制台左侧导航的"身份"部分创建一个 IAM 用户,比如叫1panel-backup。第二步,给它绑一份策略,权限只圈在备份桶上。RustFS 的策略是 AWS IAM 风格的 JSON 文档,Version字段唯一可接受的值是2012-10-17,内置的五个策略(readwrite、readonly、writeonly、diagnostics、consoleAdmin)都是全局生效的,圈不到单个桶,所以这里用自定义策略。下面这份在官方文档的"禁删除"示例基础上改出备份场景:允许这个桶的完整读写,但封掉删除动作,勒索软件拿到密钥也删不掉你的备份:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::1panel-backup", "arn:aws:s3:::1panel-backup/*"] }, { "Effect": "Deny", "Action": ["s3:DeleteObject", "s3:DeleteObjectVersion", "s3:DeleteBucket"], "Resource": ["arn:aws:s3:::1panel-backup", "arn:aws:s3:::1panel-backup/*"] } ] }

把策略文档建出来并绑到用户上,官方文档给的是管理 API 路径,也可以在控制台的身份页操作,或者装好 rc 命令行后用rc admin --help找对应子命令。绑定完成,这对用户凭证(用户名即访问密钥)就是等下填进 1Panel 的东西,保存好。

1Panel 侧:把备份账号指向 RustFS

进面板设置的备份账号页,添加一个新账号。类型有两个候选:亚马逊 S3 云存储和MINIO(MinIO 也是 S3 兼容存储),两者都能接 S3 兼容端点。1Panel 官方文档的兼容性表按云厂商逐家标注,自建 MinIO 那行标的是 Path Style 可用,RustFS 没单独出现在这张表里。它定位是 100% S3 兼容,两个类型都值得试,建议先试 MINIO 类型,保存时面板会做连接校验,通不过再换另一个类型。

要填的字段大致是这几样,具体以面板表单为准:

  • 名称:随意,比如 rustfs-backup。
  • Access Key / Secret Key:上一步那个 IAM 用户的凭证,别填管理员凭证。
  • Endpoint:RustFS 的 S3 API 地址,形如http://RustFS主机IP:9000。上一篇给 9000 配了域名反代加 HTTPS 的话,这里填https://s3.example.com那样的域名地址。
  • Bucket:1panel-backup。
  • Region:填us-east-1。RustFS 虽然没有云厂商那套多区域概念,但 SDK 的 SigV4 签名需要这个值,官方各集成页的示例也都按它给,乱填别的值可能签名直接失败。
  • 填完确认,校验通过账号就建好了。这一步通了,链路里最难缠的认证部分就结束了。

    跑一次计划任务,亲眼确认文件进了桶

    去左侧菜单的计划任务,创建一个备份网站或备份数据库的任务,关键配置项如下:

    • 备份账号:选刚建的 rustfs-backup,支持同时选多个目标。
    • 默认下载账号:多目标里有一个会被指定为默认下载账号,负责下载和核对文件大小;它的上传失败会让整个任务判失败,其他账号失败则被忽略。把最关键的那个设成默认,免得次要目标全传挂了,任务还显示成功。
    • 保留份数:只保留最近成功的若干份,面板默认填 7,以你面板实际为准,按恢复点需求调。
    • 压缩密码:面板默认不开,要加密得自己填。建议设一个,备份包落在异机多一层保护,但密码丢了,这份加密备份在面板外几乎解不开,密码要单独存好,别和备份放同一台机器。
    • 失败重试 / 超时时间 / 忽略错误:失败重试设个次数,网络抖动不至于一次失败就判死;超时时间按数据量给足;批量备份多个对象时,忽略错误决定单项失败后是否继续,按需选。
  • 执行周期:按数据变动频率定,数据库每天一备是常见起点。
  • 建好先别等它到点,列表里手动执行一次。跑完看执行记录,成功就做最后一步验证:备份文件真的在 RustFS 的桶里。控制台里打开1panel-backup桶直接看,或者用 rc 在命令行确认:

    curl -fLO https://github.com/rustfs/cli/releases/download/v0.1.30/rustfs-cli-linux-amd64-v0.1.30.tar.gz tar -xzf rustfs-cli-linux-amd64-v0.1.30.tar.gz sudo install -m 0755 rc /usr/local/bin/rc rc alias set rustfs http://RustFS主机IP:9000 <access-key> <secret-key> rc bucket list rustfs/ rc object list rustfs/1panel-backup

    列表里出现当天日期命名的压缩包,这条备份链路就算真正跑通了。

    容易卡住的几个点

    Endpoint 端口填错。要填的是 9000 那个 S3 API 口,填成 9001 控制台端口会连不上,报错信息还不一定直白。备份任务失败时,除了任务自己的执行记录,面板的“日志审计 → 系统日志”里能看到详细报错,RustFS 侧的容器日志也能对上时间线。

    禁删除策略和保留份数打架。前面那份策略封了删除,1Panel 按保留份数清理旧备份时会删不动,清理动作会报错。备份上传本身不受影响。

    两条路选一条。在意抗勒索,就保留 Deny、接受面板清理报错,改在 RustFS 侧用生命周期规则按天数清理旧备份,规则配置见官方的生命周期管理文档。过期规则建起来就一行命令:

    rc bucket lifecycle rule add local/1panel-backup --expiry-days 14

    嫌麻烦,就把策略里的 Deny 语句去掉,靠保留份数控制桶的增长。

    选生命周期这条路,还有两点要知道。一是语义差异:保留份数是“只留最近成功的 n 份”,生命周期是“超过 n 天就过期”,后者不管备份最近成功与否。把过期天数设成备份周期乘以期望份数再留余量(每天一备、想留 7 份,就设 10 到 14 天),同时把备份失败的告警接上(任务告警是 1Panel 专业版功能),别让过期规则在连续失败的日子里把仅存的好备份清掉。二是过期不是即时的:官方文档写明生命周期规则是异步评估,由后台的对象扫描器来跑,配完规则后对象不会马上消失,别当成规则没生效。

    RustFS 和 1Panel 不在同一台机器时,先在 1Panel 那台服务器上确认能访问 RustFS 的 9000 端口,云服务器的安全组和面板防火墙都要放行,跨公网的话走 HTTPS。

    别把管理员凭证填进备份账号。根凭证当然也能连上,但那把钥匙的权限是全局的,等于把整个存储押给了 1Panel 那台机器的安全水平。

    备份链路上线前的最后确认

    1. 备份账号保存时通过连接校验,通不过按上面第一、三条排查。

    2. 计划任务手动执行一次,执行记录无报错。

    3. 控制台或 rc 确认备份包已在1panel-backup桶里,下载一份确认能解开。

    4. 核对保留份数与桶增长,别让备份桶把盘吃满。

    5. 同机部署的,排个迁移计划,让“异地”那一份真正落地。

    到这里,1Panel 双篇就配成套了:上一篇把 RustFS 装进面板,这篇让面板的备份真正落到它头上。1Panel 侧的备份账号与计划任务文档、RustFS 侧的 IAM 管理和访问密钥文档建议都过一遍,版本和功能有更新时以官方文档为准。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询