七牛云对象存储使用 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
下一篇 2024年6月3日 下午3:12

相关推荐

  • 在 Linux 上保护 SSH 服务器连接的 8 种方法!

    SSH 是一种广泛使用的协议,用于安全地访问 Linux 服务器。大多数用户使用默认设置的 SSH 连接来连接到远程服务器。但是,不安全的默认配置也会带来各种安全风险。 具有开放 SSH 访问权限的服务器的 root 帐户可能存在风险。尤其是如果你使用的是公共 IP 地址,则破解 root 密码要容易得多。因此,有必要了解 SSH 安全性。 这是在 Linu…

    2023年4月24日
    92900
  • 二进制安装MySQL

    Yum/rpm包安装,简单、快速、无法定制化、新手推荐使用 二进制安装,解压缩后直接简单配置即可使用,速度较快,专业DBA常用 源码编译安装,特点是可以定制化安装需求,缺点过程较为复杂 二进制安装 创建mysql用户 因为这个用户只是用来进行管理,为了系统安全,配置无登录权限 下载mysql二进制软件包(本案例为mysql5.7.33版本) 创建tools目…

    2022年6月24日
    1.3K00
  • Linux 系统硬盘MBR转换为GPT格式并扩容

    问题描述之前创建了一台ubuntu16的服务器虚机,挂载了一块2T的云数据盘,当时文件系统做的是MBR(dos)格式,最近因为存量数据增加,数据盘空间不足就在云平台将2T的数据盘扩容成了4T,结果进入虚机扩容的时候报错MBR格式的硬盘最大支持2T,剩余的空间将不会用到。需要将硬盘转化为GPT分区格式,来支持2T以上空间的使用才行,但是转化硬盘格式又怕数据丢失…

    2023年11月23日
    1.4K00
  • CentOS图形化界面和命令行界面的转化–超详细(Linux操作系统)

    对于我这样的小白来说,Linux系统的图形化界面更加简单,但是Linux命令行才是精髓,如何进行转化呢? 1、快捷键方式切换(较为简单) 图形化界面转化成命令行界面  ctrl+alt+F3 命令行界面转化为图形化界面 ctrl+alt+F1 2、命令行形式切换切换成命令行模式: systemctl set-default mu…

    2023年12月13日
    1.4K00
  • Centos7 安装GUI图形界面-VNC远程连接

    VNC需要系统安装的有桌面,如果是生产环境服务器,安装时使用的最小化安装,那么进行下面操作按章GNOME 桌面。 # 列出的组列表里有GNOME Desktop。 #安装 # 安装完成后,修改默认启动方式为图形化界面 # 如果要换回来 #然后重启系统即可 ———————&#8…

    2023年5月11日
    1.3K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信