
dockurr/portainer-backup基于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
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务