此脚本自动为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 [***] > docker-compose.yml ```** 2. 编辑配置**打开`docker-compose.yml`文件完成配置。 配置详情见下文(点击此处)** 3. 运行docker-compose **``` docker-compose up -d
apt install git
git clone [***] /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运行时,通过配置文件(`config.json`)配置。 ### 配置:生成Hetzner Cloud控制台API密钥 1. 登录Hetzner Cloud控制台 2. 选择您的项目 3. 点击左侧的“Access”(访问) 4. 切换到顶部的“API-Tokens”(API令牌) 5. 点击“Create API Token”(创建API令牌),创建具有读写权限的新令牌 6. 复制密钥并粘贴到环境变量的`API_TOKEN`中,或配置文件的`api-token`中 !创建Hetzner API令牌动图 ### 配置:选择默认保留备份数量 通过环境变量的`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`标签即可。 !服务器标签 ## 为什么此脚本有用? | 优势 | 劣势 | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| | 可自定义快照备份时间(原生备份时间固定) | 快照数量有限制(可申请提高限额) | | 可保留任意数量备份(原生备份最多7个) | 超大服务器(存储量大)可能成本更高 | | 小型服务器(存储空间小)比原生备份更便宜 | | | 不与服务器绑定(删除服务器时,原生备份会被删除,快照不会) | | | 可直接从快照创建新服务器 | | | 快照存储在与服务器不同的位置(同一网络区域)(原生备份与服务器同位置) | | | 快照可迁移到其他项目 | |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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