glacier-cli上手实战:5分钟创建vault并上传、下载第一个归档的完整教程
【免费下载链接】glacier-cliCommand-line interface to Amazon Glacier项目地址: https://gitcode.com/gh_mirrors/gl/glacier-cli
glacier-cli 是一款面向 Amazon Glacier 的开源命令行归档工具,它把原本繁琐的冷存储操作(提交任务、轮询状态、获取结果)自动串联起来,让 sysadmin 能用几条简单命令完成 vault 创建、归档上传与下载。本教程将带你 5 分钟内完成第一个 vault 的创建,并上传、下载你的第一个归档文件。
认识 glacier-cli:冷备份的"傻瓜式"命令行工具 💡
glacier-cli 解决的核心痛点:
- 自动管理任务:Glacier 的取回需要提交 job、等待数小时、再拉取结果,glacier-cli 把这三步封装成一条命令;
- 友好命名:它利用 Glacier 的 archive description 字段保存可读的归档名,并维护本地缓存,免去你记忆一串十六进制 ID 的痛苦;
- 本地缓存加速:归档列表(
archive list)直接读本地 SQLite 缓存,秒级返回,无需每次等待数小时的 inventory 生成; - 纯 Python 实现:依赖仅 requirements.txt 中的 boto、iso8601、SQLAlchemy 三个包,安装简单。
快速安装:pip 一键部署 glacier-cli
前置条件:已安装 Python 和 pip,并配置好 AWS 访问密钥(AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY环境变量)。
推荐在虚拟环境(venv/virtualenv)中安装:
git clone https://gitcode.com/gh_mirrors/gl/glacier-cli cd glacier-cli pip install .安装完成后,虚拟环境bin目录下会生成glacier-cli命令(入口定义见 setup.py)。由于 git-annex 等工具要求命令名为glacier,建议创建软链接:
ln -s $(which glacier-cli) ~/bin/glacier第一步:创建你的第一个 vault 🚀
vault 是 Glacier 中的"存储桶",相当于归档的逻辑分组:
$ glacier vault create example-vault # 成功时无输出,符合 Unix 惯例验证创建结果(vault 列表直接从 Glacier 实时拉取,速度较快):
$ glacier vault list example-vault核心逻辑见 glacier.py 中的
vault_list与vault_create方法。
第二步:上传第一个归档文件
$ echo 42 > example-content $ glacier archive upload example-vault example-content上传完成后立即验证——得益于本地缓存,这条命令秒级返回:
$ glacier archive list example-vault example-content此时可以放心删除本地文件,数据在 Glacier 中已有存档:
$ rm example-content💡 小贴士:archive upload的归档名默认取文件名;从管道上传时需显式指定名称,例如tar czf - /data | glacier archive upload example-vault --name=data-backup -。实现见 glacier.py。
第三步:下载归档——请记住"4小时规则" ⏳
Glacier 是冷存储,取回归档需要提交 job,通常约4 小时完成。glacier-cli 提供两种等待策略:
方式一:不加--wait(适合脚本重试)
$ glacier archive retrieve example-vault example-content glacier: queued retrieval job for archive 'example-content' $ glacier archive retrieve example-vault example-content glacier: job still pending for archive 'example-content'命令会以临时失败(退出码 75)退出,表示 job 排队中,稍后重试即可。查看任务状态:
$ glacier job list a/p 2012-09-19T21:41:35.238Z example-vault example-contenta/p表示 archive retrieval / pending;状态变为a/d(done)后即可取回。
方式二:加--wait(适合一次性等待)
$ glacier archive retrieve --wait example-vault example-content # 数小时后自动完成下载 $ cat example-content 42还可以用-o指定输出文件名,或用-o-输出到标准输出供管道使用,相关参数定义见 glacier.py。
缓存重建与进阶技巧 🔧
- 换机器或缓存损坏后:运行
glacier vault sync example-vault重建本地缓存;加--max-age=0可强制请求新的 inventory job; - 多归档一次取回:
glacier archive retrieve example-vault 归档1 归档2 归档3; - 按 ID 定位归档:同名归档冲突时,用
id:前缀按 ID 寻址,name:前缀强制按名匹配; - 清理重复归档:辅助脚本 glacier-list-duplicates.sh 可列出可删除的重复归档 ID;
- 配合 git-annex 使用:将 Glacier 作为 git-annex 远程仓库,实现大文件透明备份,建议设置
git config remote.glacier.annex-cost 1000将其作为最后手段以控制成本(详见 README.md)。
常用命令速查表 📋
| 命令 | 作用 |
|---|---|
glacier vault list | 列出所有 vault |
glacier vault create <名称> | 创建 vault |
glacier vault sync <名称> | 重建/同步本地缓存 |
glacier archive list <vault> | 列出 vault 中的归档 |
glacier archive upload <vault> <文件> | 上传归档 |
glacier archive retrieve <vault> <归档名> | 下载归档(可加--wait) |
glacier archive delete <vault> <归档名> | 删除归档 |
glacier job list | 查看所有 job 状态 |
⚠️费用提醒:Glacier 的取回费用比存储费用复杂得多,上传分块也会产生大量请求。动手前建议先了解 Amazon Glacier 的计价方式,避免账单意外。
写在最后
到这里,你已经完成了 glacier-cli 的核心工作流:创建 vault → 上传归档 → 下载归档。它把 Glacier 最繁琐的异步任务管理藏在了简单的命令行背后,配合本地缓存与 git-annex,是构建廉价冷备份方案的理想选择。更多用法请阅读 README.md。
【免费下载链接】glacier-cliCommand-line interface to Amazon Glacier项目地址: https://gitcode.com/gh_mirrors/gl/glacier-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考