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

相关推荐

  • 禅道安装

    禅道介绍 禅道项目管理软件是国产的开源项目管理软件,专注研发项目管理,内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能,实现了软件的完整生命周期管理。 禅道属于开源项目,有收费版,本次以开源版9.1.2进行搭建 禅道官网:http://www.zentao.net/ 提示:本地环境我们没有安装mysql,安装禅道环境需要LNMP或者LA…

    2023年4月27日
    1.5K00
  • Centos7.6安装MySQL(超详细)

    1、查看是否已经安装Mysql rpm -qa | grep mysql 我已经安装过了 如果你查看出来有东西,可以使用下面命令将其删除 rpm -e 文件名 如果提示warning: waiting for transaction lock on /var/lib/rpm/.rpm.lock,则需要执行 2、下载官方Mysql包 wget -i -c ht…

    2022年6月9日
    1.9K00
  • root用户 ssh远程登录 提示access denied

    ssh远程登录 提示Access denied,如下图所示: 需要修改SSH服务配置文件sshd_config来解决这个问题。文件路径为 /etc/ssh/sshd_config ,默认文件内容如下图: 图中红框内容修改为 PermitRootLogin yes,如下图所示: 修改好配置文件并保存,service ssh restart 重启SSH服务,ss…

    2023年6月8日
    1.4K00
  • 网站常见错误代码及解决方案

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

    2022年6月13日
    1.9K00
  • 安装linux/Centos系统出现An Unknown Error Has Occurred报错原因和解决方法

    今天在给一个客户重装系统的时候出现: An Unknown Error Has OccurredThis program has encountered an unknown error. You may report the buy below or quit the program. This program has encountered an unk…

    2024年1月22日
    2.4K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信