七牛云对象存储使用 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

相关推荐

  • 网站常见错误代码及解决方案

    有时候大家在打开网页时会遇到各种各样的错误报告,比如404,500之类的,这些错误是服务器接到浏览器的请求后访回的状态码,专业术语叫服务器信息头,不同的状态码有不同的含义,了解一些有利于搞清楚哪里出了问题。 注:本文仅供学习 一、HTTP4xx(请求错误) HTTP错误400 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。 HT…

    2022年6月13日
    2.1K00
  • frp配置多端口内网穿透?frp多端口怎么配置?

    FRP内网穿透应用场景:本地Web服务外网访问、本地开发微信、本地联调支付宝\微信支付、TCP/UDP端口转发 在本机开发好的网站想让客户测试不在需要上传到服务器上面,使用FRP内外网穿透轻松解决;微信开发也不需要在上传到服务器,使用免费FRP内网穿透服务器帮您解决80端口问题,实现微信服务器直接访问到您本机web服务。 使用frp作为内网穿透的时候,有时候…

    2024年5月10日
    1.6K00
  • Centos7.6下宝塔安装及资产管理系统部署

    一:宝塔安装 1、连接linux服务器 2、执行命令开始安装 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec 安装成功出现下方界面 3、访问外网地址…

    2022年6月8日
    5.6K90
  • Minio nginx配置https和http问题解决,疑难症全网首发

    以下问题基本上是因为NGINX代理出现 一、API直接返回单独的错误: io.minio.errors.ErrorResponseException: Access denied 二、API直接返回的错误:The request signature we calculated does not match the si 三、预览文件或者图片返回错误 以上三个…

    2023年10月18日
    4.3K00
  • 在Linux中执行yum命令失败,提示“HTTP Error 404 -Not Found Trying other mirror”错误怎么办?

    问题描述 在Linux系统的ECS实例中执行yum命令(如yum -y install XXX、yum list、yum search XXX等)失败,出现类似如下错误信息。 问题原因 出现该问题可能有以下原因: 解决方案 切换CentOS 6/8的源地址 CentOS 6与CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作…

    2023年11月28日
    1.3K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信