
基于SavageSoftware/portainer-backup的Fork版本,包含一些小bug修复和依赖更新。
docker-compose文件yamlservices: portainer-backup: image: dockurr/portainer-backup container_name: portainer-backup command: schedule environment: TZ: "America/New_York" PORTAINER_BACKUP_URL: "[***]" PORTAINER_BACKUP_TOKEN: "PORTAINER_ACCESS_TOKEN" PORTAINER_BACKUP_PASSWORD: "" PORTAINER_BACKUP_OVERWRITE: 1 PORTAINER_BACKUP_SCHEDULE: "0 0 0 * * *" PORTAINER_BACKUP_STACKS: 1 PORTAINER_BACKUP_DRYRUN: 0 PORTAINER_BACKUP_CONCISE: 1 PORTAINER_BACKUP_DIRECTORY: "/backup" PORTAINER_BACKUP_FILENAME: "portainer-backup.tar.gz" volumes: - ./backup:/backup restart: always
shelldocker run -it --rm \ --name portainer-backup \ --volume "${PWD:-.}/backup:/backup" \ --env PORTAINER_BACKUP_URL="[***]" \ --env PORTAINER_BACKUP_TOKEN="YOUR_ACCESS_TOKEN" \ dockurr/portainer-backup \ backup
此工具需要通过单个命令执行内置操作之一。
| 命令 | 描述 |
|---|---|
backup | 备份Portainer数据归档文件 |
schedule | 运行定时Portainer备份 |
stacks | 备份Portainer stacks配置 |
test | 测试备份(不保存文件) |
info | 获取Portainer服务器信息 |
backup操作将对指定服务器执行一次Portainer数据备份。备份文件为TAR.GZ归档,可选择使用密码保护(--password)。操作完成后进程立即终止。
以下Docker命令将执行Portainer数据备份:
shelldocker run -it --rm \ --name portainer-backup \ --volume ${PWD:-.}/backup:/backup \ --env TZ="America/New_York" \ --env PORTAINER_BACKUP_URL="[***]" \ --env PORTAINER_BACKUP_TOKEN="PORTAINER_ACCESS_TOKEN" \ --env PORTAINER_BACKUP_OVERWRITE=true \ --env PORTAINER_BACKUP_DIRECTORY=/backup \ dockurr/portainer-backup:latest \ backup
test操作将对指定服务器执行一次Portainer数据备份,但不会将数据保存到文件系统。test操作等同于使用--dryrun选项。操作完成后进程立即终止。
以下Docker命令将执行Portainer数据测试备份:
shelldocker run -it --rm \ --name portainer-backup \ --volume ${PWD:-.}/backup:/backup \ --env TZ="America/New_York" \ --env PORTAINER_BACKUP_URL="[***]" \ --env PORTAINER_BACKUP_TOKEN="PORTAINER_ACCESS_TOKEN" \ --env PORTAINER_BACKUP_DIRECTORY=/backup \ dockurr/portainer-backup:latest \ test
schedule操作将对指定服务器执行持续的定时备份。--schedule选项或PORTAINER_BACKUP_SCHEDULE环境变量接受cron格式字符串定义备份计划。进程将持续运行,除非启动时验证步骤失败。
以下Docker命令将执行Portainer数据定时备份:
shelldocker run -it --rm \ --name portainer-backup \ --volume ${PWD:-.}/backup:/backup \ --env TZ="America/New_York" \ --env PORTAINER_BACKUP_URL="[***]" \ --env PORTAINER_BACKUP_TOKEN="PORTAINER_ACCESS_TOKEN" \ --env PORTAINER_BACKUP_OVERWRITE=true \ --env PORTAINER_BACKUP_DIRECTORY=/backup \ --env PORTAINER_BACKUP_SCHEDULE="0 0 0 * * *" \ dockurr/portainer-backup:latest \ schedule
info操作将向指定Portainer服务器发送信息请求。操作完成后进程立即终止。
以下Docker命令将从Portainer获取信息:
shelldocker run -it --rm \ --name portainer-backup \ --env PORTAINER_BACKUP_URL="[***]" \ dockurr/portainer-backup:latest \ info
stacks操作将对指定服务器执行一次Portainer stacks的docker-compose数据备份。此操作不备份Portainer数据库/数据文件,仅备份stacks配置。也可通过backup操作中的--stacks选项包含stacks备份。操作完成后进程立即终止。
以下Docker命令将执行Portainerstacks备份:
shelldocker run -it --rm \ --name portainer-backup \ --volume ${PWD:-.}/backup:/backup \ --env TZ="America/New_York" \ --env PORTAINER_BACKUP_URL="[***]" \ --env PORTAINER_BACKUP_TOKEN="PORTAINER_ACCESS_TOKEN" \ --env PORTAINER_BACKUP_OVERWRITE=true \ --env PORTAINER_BACKUP_DIRECTORY=/backup \ dockurr/portainer-backup:latest \ stacks
生成的备份文件可用于Portainer内置的恢复功能。详情参见:[***]
Portainer-backup进程退出后将返回数值。
| 值 | 描述 |
|---|---|
| 0 | 工具成功执行命令 |
| 1 | 工具遇到错误并失败 |
Portainer-backup支持通过命令行参数和环境变量配置所有选项。
| 选项 | 环境变量 | 类型 | 描述 |
|---|---|---|---|
-t, --token | PORTAINER_BACKUP_TOKEN | string | Portainer访问令牌 |
-u, --url | PORTAINER_BACKUP_URL | string | Portainer基础URL |
-Z, --ignore-version | PORTAINER_BACKUP_IGNORE_VERSION | true|false | 绕过Portainer版本检查/强制验证 |
-d, --directory, --dir | PORTAINER_BACKUP_DIRECTORY | string | 备份目录/路径 |
-f, --filename | PORTAINER_BACKUP_FILENAME | string | 备份文件名 |
-p, --password, --pw | PORTAINER_BACKUP_PASSWORD | string | 备份归档密码 |
-M, --mkdir, --make-directory | PORTAINER_BACKUP_MKDIR | true|false | 创建备份目录路径 |
-o, --overwrite | PORTAINER_BACKUP_OVERWRITE | true|false | 覆盖现有文件 |
-s, --schedule, --sch | PORTAINER_BACKUP_SCHEDULE | string | 定时备份的cron表达式 |
-i, --include-stacks, --stacks | PORTAINER_BACKUP_STACKS | true|false | 在备份中包含stack文件 |
-q, --quiet | PORTAINER_BACKUP_QUIET | true|false | 不显示任何控制台输出 |
-D, --dryrun | PORTAINER_BACKUP_DRYRUN | true|false | 执行命令任务但不持久化任何数据 |
-X, --debug | PORTAINER_BACKUP_DEBUG | true|false | 打印遇到的任何错误的堆栈跟踪 |
-J, --json | PORTAINER_BACKUP_JSON | true|false | 打印格式化/结构化JSON数据 |
-c, --concise | PORTAINER_BACKUP_CONCISE | true|false | 打印简洁/有限的输出 |
-v, --version | (N/A) | 显示工具版本号 | |
-h, --help | (N/A) | 显示帮助信息 |
注意: 如果同时配置了环境变量和命令行选项,命令行选项将优先生效。
Portainer-backup通过--schedule选项或PORTAINER_BACKUP_SCHEDULE环境变量接受cron格式字符串表达式定义备份计划。
注意: 支持的cron语法详情参见:[***]
语法格式: ┌──────────────────────── 秒(可选) │ ┌──────────────────── 分 │ │ ┌──────────────── 时 │ │ │ ┌──────────── 日 │ │ │ │ ┌──────── 月 │ │ │ │ │ ┌──── 周 │ │ │ │ │ │ │ │ │ │ │ │ * * * * * * 示例: 0 0 0 * * * 每天午夜12:00 0 0 5 1 * * 每月1日凌晨5:00 0 */15 0 * * * 每15分钟
| 字段 | 允许值 |
|---|---|
| 秒 | 0-59 |
| 分 | 0-59 |
| 时 | 0-23 |
| 日 | 1-31 |
| 月 | 1-12(或名称) |
| 周 | 0-7(或名称,0或7为周日) |
| 表达式 | 描述 |
|---|---|
0 0 4,8,12 * * * | 每天4点、8点、12点执行 |
| 表达式 | 描述 |
|---|---|
0 0 1-5 * * * | 每天1点到5点每小时执行 |
步长值可与范围结合使用,在范围后添加/和数字。例如:1-10/2等同于2,4,6,8,10。也可在星号后使用步长,如每2分钟执行可使用*/2。
| 表达式 | 描述 |
|---|---|
0 0 */2 * * * | 每2小时执行 |
月和周字段也可使用名称或缩写名称。例如:
| 表达式 | 描述 |
|---|---|
* * * * January,September Sunday | 1月和9月的周日执行 |
* * * * Jan,Sep Sun | 1月和9月的周日执行(缩写) |
Portainer-backup支持通过替换语法为目录和文件名选项动态分配日期时间元素。
| 命令行选项 | 环境变量 |
|---|---|
-d, --directory, --dir | PORTAINER_BACKUP_DIRECTORY |
-f, --filename | PORTAINER_BACKUP_FILENAME |
所有替换预设和/或令牌使用双花括号包裹:{{ PRESET|TOKEN }}
示例:
--filename "portainer-backup-{{DATE}}.tar.gz"
Portainer-backup使用Luxon库解析日期时间语法。更多信息参见:[***]
所有日期时间均使用运行portainer-backup工具的系统本地时间渲染。也可在任何令牌前添加UTC_前缀以使用UTC时间。
文件名还会经过sanitize函数处理,去除不支持的字符::替换为_,/替换为-。
portainer-backup定义了以下替换预设:
| 令牌 | 格式 | 示例(美国时间) |
|---|---|---|
DATETIME | yyyy-MM-dd'T'HHmmss | 2022-03-05T231356 |
TIMESTAMP | yyyyMMdd'T'HHmmss.SSSZZZ | 20220305T***.445-0500 |
DATE | yyyy-MM-dd | 2022-03-05 |
TIME | HHmmss | 231356 |
ISO8601 | yyyy-MM-dd'T'hh_mm_ss.SSSZZ | 2017-04-20T11_32_00.000-04_00 |
ISO | yyyy-MM-dd'T'hh_mm_ss.SSSZZ | 2017-04-20T11_32_00.000-04_00 |
ISO_BASIC | yyyyMMdd'T'hhmmss.SSSZZZ | 20220305T***.871-05_00 |
ISO_NO_OFFSET | yyyy-MM-dd'T'hh_mm_ss.SSS | 2022-03-05T19_12_43.296 |
ISO_DATE | yyyy-MM-dd | 2017-04-20 |
ISO_WEEKDATE | yyyy-'W'kk-c | 2017-W17-7 |
ISO_TIME | hh_mm_ss.SSSZZZ | 11_32_00.000-04_00 |
RFC2822 | ccc, dd LLL yyyy HH_mm_ss ZZZ | Thu, 20 Apr 2017 11_32_00 -0400 |
HTTP | ccc, dd LLL yyyy HH_mm_ss ZZZZ | Thu, 20 Apr 2017 03_32_00 GMT |
MILLIS | x | 1492702320000 |
SECONDS | X | ***.000 |
UNIX | X | ***.000 |
EPOCH | X | ***.000 |
以下替换预设由Luxon库提供并被portainer-backup支持: (更多信息参见Luxon文档:[***]
(以下预设使用1983年10月14日13:30:23
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429