七牛云对象存储使用 qshell 批量管理文件存储类型(实战教程)

七牛云对象存储使用 qshell 批量管理文件存储类型(实战教程)

一、适用场景说明

本教程适用于以下典型场景:

    • 存储桶中存在 低频 / 智能分层 / 归档 / 归档直读 / 深度归档 文件
    • 需要 批量解冻深度归档文件
    • 解冻完成后,统一转回标准存储
    • 文件数量较多(几千~几十万)
    • 需要 可恢复、可记录、可重试 的 CLI 操作方案

二、前置条件

1️⃣ 准备 qshell

下载地址:https://github.com/qiniu/qshell/releases

chmod +x qshell

确认版本(建议记录):

./qshell version
root@ubuntu:~# ./qshell version
v2.17.0
root@ubuntu:~# 

2️⃣ 七牛云 AccessKey / SecretKey

确保账号具备以下权限(至少):

    • 对象存储 Bucket 管理权限
    • 文件解冻
    • 文件存储类型变更

三、qshell 鉴权配置

命令格式

./qshell account <AK> <SK> <AccountName>

成功后配置会写入:

~/.qshell/account.json

四、导出非标准存储对象清单

存储类型枚举值(非常重要)

FileType 含义
0 标准存储
1 低频存储
2 归档存储
3 深度归档存储
4 归档直读
5 智能分层

导出所有非标准存储对象

./qshell listbucket2 <Bucket> \
  --file-types 1,2,3,4,5 \
  --show-fields Key,FileType \
  -o non_standard_objects.tsv

输出示例(TSV):

1721127498013.0708.MOV	3
2024-07-05-6686ca2981a6d.jpg	3
xxx.pdf	2

五、筛选“深度归档”文件 Key 列表

只保留 FileType = 3(深度归档)

awk -F'\t' '$2==3 {print $1}' non_standard_objects.tsv > deep_archive_keys.txt

检查数量:

wc -l deep_archive_keys.txt

六、解冻深度归档存储(batchrestorear)

命令说明

qshell batchrestorear <Bucket> <FreezeAfterDays>
    • ​FreezeAfterDays​:解冻后保持可访问天数(1–7)
    • 输入文件:仅包含 Key,一行一个
    • 支持断点记录、失败重试

解冻命令(推荐生产参数)

./qshell batchrestorear <Bucket> 7 \
  -i deep_archive_keys.txt \
  -y \
  --enable-record \
  -s deep_restore_success.txt \
  -e deep_restore_failure.txt

⚠️ 解冻是异步的,通常需要:

    • 归档:分钟级
    • 深度归档:数小时

七、确认解冻状态

单文件验证(可选)

./qshell stat <Bucket> 1721127498013.0708.MOV

是否“真的可转标准”,以控制台是否允许修改为准

八、解冻后 → 转换为标准存储(关键步骤)

⚠️ 重要说明(本次问题核心)

你当前 qshell 版本中:

​batchchtype​ 的输入文件必须是:Key + 目标 FileType 的映射文件

而不是只写 Key。


1️⃣ 构造 Key → 标准存储(0)映射文件

awk '{print $0 "\t0"}' deep_archive_keys.txt > deep_archive_to_standard.tsv

文件示例:

1721127498013.0708.MOV	0
2024-07-05-6686ca2981a6d.jpg	0

分隔符必须是 TAB


2️⃣ 执行批量转换存储类型

./qshell batchchtype <Bucket> \
  -i deep_archive_to_standard.tsv \
  -y \
  --enable-record \
  -s ch_type_success.txt \
  -e ch_type_failure.txt

九、验证转换结果

./qshell stat <Bucket> 1721127498013.0708.MOV

期望结果:

FileType: 0 -> 标准存储

控制台中“存储类型”显示为:标准存储


十、常见错误与排查

❌ 报错:need more than one param​

原因:

    • ​batchchtype​ 输入文件中只有 Key
    • 缺少目标 FileType 列

解决:

Key<TAB>0

❌ batchrestorear 卡住 / Total=0

原因:

    • 输入文件方式错误
    • 未使用 -i​
    • 误用 stdin

解决:

始终使用:

-i file.txt

十一、推荐生产实践

    • ✔ 使用 –enable-record​
    • ✔ 保留 success / failure 文件
    • ✔ 转换完成后调整生命周期规则,避免再次转归档
    • ✔ 大批量(>10 万)建议拆批执行

十二、流程总结(一句话版)

listbucket2 → 筛选深度归档 → batchrestorear 解冻 →构造 Key+0 映射 → batchchtype 转标准 → stat 校验

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/12360

(0)
郭靖的头像郭靖
上一篇 2025年6月14日 下午5:59
下一篇 2026年2月2日 下午10:33

相关推荐

  • ansible基础用法

    今天需要同时对200+机器进行操作,使用ansible进行处理 首先使用的是ubuntu22.04的机器,一键安装ansible 安装完成后,需要对ansible.cfg配置文件进行修改,在当前目录下,新建 ansible.cfg 文件 配置文件完成后,需要创建hosts主机组,新建 hosts 文件 最后进行机器验证 这样就说明,你的ansible主机可以…

    2023年11月7日
    1.8K00
  • 一分钟解决打不开网页的故障

    做IT外包N多年了,每天就是面对各种大大小小的报修,有些小事,也算值得一记,分享给各位。 本文讲述的是一个非常多见的问题——微信和QQ能正常收发消息,但是所有网页都打不开,这个问题具有一定的普遍性和高发性,所以,我也是再一次地发文讲述 客户报修给技术小伙,他当时正开车,就直接转发给我了,我一看这种问题,大概率就是DNS的问题,与其我再安排别的技术小伙,还不如…

    2024年5月17日
    1.6K00
  • Ubuntu 输入正确的密码后,黑屏一闪,重新返回到登陆界面问题解决

    一,问题描述: Ubuntu出现登陆界面后,选择用户名,输入密码,然后登陆画面消失,似乎要进入系统了;但很快,又出现了同样的用户登陆界面,再次选择用户名、输入密码,再次来到这个状态,形成一个死循环。 二,解决办法: 1.若是本地的虚拟机运行的服务: 在登录界面Ctrl+Alt+F1进入命令行界面: 先找到这个文件: /home/user/.xsession-…

    2023年11月29日
    3.4K00
  • Redis删除特定前缀key的优雅实现

    Redis中没有批量删除特定前缀key的指令,但我们往往需要根据前缀来删除,那么究竟该怎么做呢?可能你一通搜索后会得到下边的答案 直接在linux下通过redis的keys命令匹配到所有的key,然后调用系统命令xargs来删除,看似非常完美,实则风险巨大 因为Redis的单线程服务模式,命令keys会阻塞正常的业务请求,如果你一次keys匹配的数量过多或者…

    2023年1月17日
    1.8K00
  • Centos如何通过Nexus代理yum源

    一 背景 公司的某些服务器不允许连接外网,造成这些服务器需要安装软件时非常不方便,此文章则是介绍如何通过Nexus3.x代理yum源,做到通过yum install来安装软件。 二 创建yum代理仓库 三 服务器上增加yum源 四 Yum安装软件

    2023年5月15日
    2.2K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信