
此脚本自动为Hetzner Cloud服务器创建快照并删除旧快照。快照可作为Hetzner原生自动备份的替代方案,优势在于可创建更多备份并自定义时间。通过Hetzner Cloud控制台的标签即可轻松使用,只需为服务器添加标签即可。
docker run -d --name hcloud-snapshot-as-backup
--restart unless-stopped
-v /etc/localtime:/etc/localtime:ro
-e API_TOKEN=
-e SNAPSHOT_NAME="%name%-%timestamp%"
-e LABEL_SELECTOR="AUTOBACKUP"
-e KEEP_LAST=3
-e CRON="0 1 * * *"
fbrettnich/hcloud-snapshot-as-backup
在第4行的`API_TOKEN=`后填入您的Hetzner Cloud控制台API密钥。 可选:将`CRON`设置为`false`可禁用容器内的Cron调度器,改为在容器外调度,尤其适用于使用Amazon ECS定时任务或Google Cloud Run任务的场景。 --- ### 安装:使用Docker Compose**1. 下载docker-compose.yml**``` curl -sSL https://raw.githubusercontent.com/fbrettnich/hcloud-snapshot-as-backup/main/docker-compose.yml > docker-compose.yml ```** 2. 编辑配置**打开`docker-compose.yml`文件完成配置。 配置详情见下文(点击此处)** 3. 运行docker-compose **``` docker-compose up -d
apt install git
git clone https://github.com/fbrettnich/hcloud-snapshot-as-backup.git /opt/hcloud-snapshot-as-backup
** 2. 安装依赖**
apt install python3 python3-pip
pip3 install -r /opt/hcloud-snapshot-as-backup/requirements.txt
** 3. 复制配置文件**
cd /opt/hcloud-snapshot-as-backup/
cp config-example.json config.json
** 4. 编辑配置**打开`config.json`文件完成配置。 配置详情见下文(点击此处)** 5. 运行脚本**
python3 /opt/hcloud-snapshot-as-backup/snapshot-as-backup.py
如需自动执行脚本,可创建crontab:Crontab生成器
crontab -e
在文件末尾添加crontab:
0 1 * * * python3 /opt/hcloud-snapshot-as-backup/snapshot-as-backup.py >/dev/null 2>&1
此crontab将每天凌晨1点执行脚本。 ## 配置 根据脚本的运行方式,配置方法有所不同: - 使用Docker时,通过环境变量配置; - 通过命令/crontab运行时,通过配置文件(https://github.com/fbrettnich/hcloud-snapshot-as-backup/blob/main/config-example.json)配置。 ### 配置:生成Hetzner Cloud控制台API密钥 1. 登录Hetzner Cloud控制台 2. 选择您的项目 3. 点击左侧的“Access”(访问) 4. 切换到顶部的“API-Tokens”(API令牌) 5. 点击“Create API Token”(创建API令牌),创建具有读写权限的新令牌 6. 复制密钥并粘贴到环境变量的`API_TOKEN`中,或配置文件的`api-token`中 !https://raw.githubusercontent.com/fbrettnich/hcloud-snapshot-as-backup/main/.github/images/create-hetzner-api-token.gif ### 配置:选择默认保留备份数量 通过环境变量的`KEEP_LAST`或配置文件的`keep-last`指定默认每台服务器保留的备份数量。 可通过标签在Hetzner Cloud控制台直接覆盖默认值:为服务器添加标签`AUTOBACKUP.KEEP-LAST`,值为该服务器的保留数量。 系统将保留最新的快照,删除旧快照。 ### 配置:为需备份服务器添加标签 所有需要脚本自动创建快照备份的服务器,必须添加标签`AUTOBACKUP`,值为`true`。 ### 配置:修改默认标签 如需将默认标签从`AUTOBACKUP`修改为其他值,可在配置文件中修改`label_selector`的值;Docker环境下,可设置`LABEL_SELECTOR`环境变量。修改后,`KEEP-LAST`设置也需使用新标签。 ### 配置:选择快照名称(可选) 通过环境变量的`SNAPSHOT_NAME`或配置文件的`snapshot-name`指定快照名称格式。默认名称为`<服务器名称>-<时间戳>`。 | 占位符 | 说明 | |--------------|--------------------------| | %id% | 服务器ID | | %name% | 服务器名称 | | %timestamp% | 当前时间戳 | | %date% | 当前日期(`%Y-%m-%d`) | | %time% | 当前时间(`%H:%M:%S`) | ### 配置:Docker通过cron指定脚本执行频率 Docker环境下,通过环境变量`CRON`指定cron表达式,定义脚本执行频率。如需在容器外调度,可将`CRON`设为`false`。 可通过Cron生成器创建表达式。例如:
0 1 * * *
此表达式将每天凌晨1点执行脚本。 ## 关于标签 此脚本基于Hetzner标签功能工作: - **服务器标签** - `AUTOBACKUP` - 标签值为`true`的服务器将被脚本纳入备份范围,可在Hetzner Cloud控制台直接指定需备份的服务器。 - `AUTOBACKUP.KEEP-LAST`(可选) - 用于指定该服务器保留的备份数量,未设置时使用默认值。 - **快照标签** - `AUTOBACKUP` - 脚本创建的快照会自动添加此标签,便于识别自动生成的快照。 - 脚本仅删除带有此标签的旧快照(无此标签的快照将被忽略)。 - 如需保留某个自动生成的快照,移除其`AUTOBACKUP`标签即可。 !https://raw.githubusercontent.com/fbrettnich/hcloud-snapshot-as-backup/main/.github/images/server-labels.png "Hetzner Cloud控制台:服务器标签" ## 为什么此脚本有用? | 优势 | 劣势 | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| | 可自定义快照备份时间(原生备份时间固定) | 快照数量有限制(可申请提高限额) | | 可保留任意数量备份(原生备份最多7个) | 超大服务器(存储量大)可能成本更高 | | 小型服务器(存储空间小)比原生备份更便宜 | | | 不与服务器绑定(删除服务器时,原生备份会被删除,快照不会) | | | 可直接从快照创建新服务器 | | | 快照存储在与服务器不同的位置(同一网络区域)(原生备份与服务器同位置) | | | 快照可迁移到其他项目 | |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务