<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>COS on XEDCZQ的博客</title><link>https://xedczq.cn/tags/cos/</link><description>Recent content in COS on XEDCZQ的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 23 Jun 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://xedczq.cn/tags/cos/index.xml" rel="self" type="application/rss+xml"/><item><title>CLI 查看腾讯云 COS 目录</title><link>https://xedczq.cn/post/cli%E6%9F%A5%E7%9C%8B%E8%85%BE%E8%AE%AF%E4%BA%91cos%E7%9B%AE%E5%BD%95/</link><pubDate>Tue, 23 Jun 2026 00:00:00 +0800</pubDate><guid>https://xedczq.cn/post/cli%E6%9F%A5%E7%9C%8B%E8%85%BE%E8%AE%AF%E4%BA%91cos%E7%9B%AE%E5%BD%95/</guid><description>&lt;h1 id="cli-查看腾讯云-cos-目录"&gt;&lt;a href="#cli-%e6%9f%a5%e7%9c%8b%e8%85%be%e8%ae%af%e4%ba%91-cos-%e7%9b%ae%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;CLI 查看腾讯云 COS 目录
&lt;/h1&gt;&lt;p&gt;这篇笔记记录我这次用命令行查看腾讯云 &lt;code&gt;COS&lt;/code&gt; 目录结构的过程。目标很直接：我想确认当前 Bucket 里到底有哪些顶层目录，以及 &lt;code&gt;uploads/&lt;/code&gt; 下面现在究竟是旧结构为主，还是新的课程封面目录结构已经开始接管。&lt;/p&gt;
&lt;p&gt;这次我主要做了两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用本机已经配置好的 &lt;code&gt;coscmd&lt;/code&gt; 检查腾讯云 COS 当前目录结构&lt;/li&gt;
&lt;li&gt;确认 &lt;code&gt;uploads/&lt;/code&gt; 下新旧两套上传路径是否并存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;先说结果：&lt;strong&gt;当前 COS 里老的按日期直挂目录还在，新整理出来的 &lt;code&gt;uploads/course-cover/&lt;/code&gt; 和 &lt;code&gt;uploads/course-cover/thumbs/&lt;/code&gt; 也已经存在，说明新旧结构目前是并行状态。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="这次一开始遇到的问题"&gt;&lt;a href="#%e8%bf%99%e6%ac%a1%e4%b8%80%e5%bc%80%e5%a7%8b%e9%81%87%e5%88%b0%e7%9a%84%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;这次一开始遇到的问题
&lt;/h2&gt;&lt;p&gt;我最开始直接执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coscmd list /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结果命令失败，报错是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;InvalidAccessKeyId
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个报错很直接，说明不是 Bucket 路径有问题，而是本机 &lt;code&gt;coscmd&lt;/code&gt; 当前加载到的凭证配置不正确。换句话说，问题出在本地配置文件里的 &lt;code&gt;SecretId&lt;/code&gt;、&lt;code&gt;SecretKey&lt;/code&gt; 或相关 Bucket 配置，而不是 COS 本身不可用。&lt;/p&gt;
&lt;h2 id="我是怎么修复-coscmd-配置的"&gt;&lt;a href="#%e6%88%91%e6%98%af%e6%80%8e%e4%b9%88%e4%bf%ae%e5%a4%8d-coscmd-%e9%85%8d%e7%bd%ae%e7%9a%84" class="header-anchor"&gt;&lt;/a&gt;我是怎么修复 coscmd 配置的
&lt;/h2&gt;&lt;p&gt;确认是本地配置问题之后，我重新执行了一次 &lt;code&gt;coscmd config&lt;/code&gt;，把账号信息、Bucket 和 Region 重新写回配置文件。&lt;/p&gt;
&lt;p&gt;出于安全考虑，这里只保留脱敏后的命令格式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coscmd config -a xxx -s xxx -b xxx -r xxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;重新配置完成后，配置文件生成在：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/Users/xedczq/.cos.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这一点很重要，因为以后如果再碰到 &lt;code&gt;InvalidAccessKeyId&lt;/code&gt;，我第一反应就应该先去核对这个文件，而不是先怀疑 COS 目录或者对象路径。&lt;/p&gt;
&lt;h2 id="配置恢复后我确认到的基本信息"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae%e6%81%a2%e5%a4%8d%e5%90%8e%e6%88%91%e7%a1%ae%e8%ae%a4%e5%88%b0%e7%9a%84%e5%9f%ba%e6%9c%ac%e4%bf%a1%e6%81%af" class="header-anchor"&gt;&lt;/a&gt;配置恢复后我确认到的基本信息
&lt;/h2&gt;&lt;p&gt;重新配置成功后，我再次执行目录查看命令，访问就恢复正常了。&lt;/p&gt;
&lt;p&gt;当前 COS 的基础信息是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bucket：&lt;code&gt;yizhoudao-1317126361&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Region：&lt;code&gt;ap-nanjing&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我看到的 COS 根目录当前内容是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qrcode/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;storage/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uploadfile/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uploads/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x36xhzz.m3u8&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明当前这个 Bucket 里不只是课程相关资源，还混合存在这些内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;二维码目录&lt;/li&gt;
&lt;li&gt;旧业务静态文件目录&lt;/li&gt;
&lt;li&gt;上传文件目录&lt;/li&gt;
&lt;li&gt;单独的 &lt;code&gt;m3u8&lt;/code&gt; 文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从目录形态上看，这就是一个已经使用了一段时间、并且业务类型比较杂的存储桶，而不是一个只承载单一模块资源的干净目录。&lt;/p&gt;
&lt;h2 id="uploads-目录下的实际结构"&gt;&lt;a href="#uploads-%e7%9b%ae%e5%bd%95%e4%b8%8b%e7%9a%84%e5%ae%9e%e9%99%85%e7%bb%93%e6%9e%84" class="header-anchor"&gt;&lt;/a&gt;uploads 目录下的实际结构
&lt;/h2&gt;&lt;p&gt;接着我执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coscmd list /uploads/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;确认到 &lt;code&gt;uploads/&lt;/code&gt; 目录下已经存在大量按日期命名的旧目录，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;uploads/2025-12-02/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uploads/2025-12-31/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uploads/2026-01-26/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uploads/2026-06-23/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;与此同时，我也看到了这次新整理出来的课程封面专用目录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;uploads/course-cover/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着当前 COS 里实际并存两种上传结构。&lt;/p&gt;
&lt;p&gt;旧结构是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uploads/日期/文件名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;新结构是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uploads/course-cover/日期/文件名
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uploads/course-cover/thumbs/日期/文件名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="我对当前目录结构的判断"&gt;&lt;a href="#%e6%88%91%e5%af%b9%e5%bd%93%e5%89%8d%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84%e7%9a%84%e5%88%a4%e6%96%ad" class="header-anchor"&gt;&lt;/a&gt;我对当前目录结构的判断
&lt;/h2&gt;&lt;p&gt;这次看完以后，我的判断很明确：&lt;/p&gt;
&lt;p&gt;老系统过去大量使用的，还是最直接的“按日期挂在 &lt;code&gt;uploads/&lt;/code&gt; 下面”的结构。这个结构能用，但目录语义很弱。只看路径本身，很难一眼判断一个文件到底属于哪个业务模块，也不方便后续做分类迁移和资源治理。&lt;/p&gt;
&lt;p&gt;而现在新规划出来的课程封面目录已经开始落到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;uploads/course-cover/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uploads/course-cover/thumbs/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这件事本身很关键，因为它说明课程封面资源已经开始从“通用上传目录”里独立出来。&lt;/p&gt;
&lt;p&gt;从工程角度看，这种分层至少有三个直接好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;课程封面资源路径更稳定，业务语义更清晰&lt;/li&gt;
&lt;li&gt;缩略图目录可以独立管理，不再和原图混在一起&lt;/li&gt;
&lt;li&gt;后续做批量迁移、脏文件清理、资源对账时更容易处理&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="这次整理出来的结论"&gt;&lt;a href="#%e8%bf%99%e6%ac%a1%e6%95%b4%e7%90%86%e5%87%ba%e6%9d%a5%e7%9a%84%e7%bb%93%e8%ae%ba" class="header-anchor"&gt;&lt;/a&gt;这次整理出来的结论
&lt;/h2&gt;&lt;p&gt;如果把这次结果压缩成一句话，我会这样总结：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;老系统原本大量使用的是 &lt;code&gt;uploads/日期/文件名&lt;/code&gt; 这种直接按日期挂载的旧结构；而我现在为课程封面单独规划的新结构，已经成功落到了 &lt;code&gt;uploads/course-cover/&lt;/code&gt; 与 &lt;code&gt;uploads/course-cover/thumbs/&lt;/code&gt; 下面。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这说明新规则不是停留在设计层，而是已经真正开始写入 COS。&lt;/p&gt;
&lt;h2 id="这次我会保留的常用命令"&gt;&lt;a href="#%e8%bf%99%e6%ac%a1%e6%88%91%e4%bc%9a%e4%bf%9d%e7%95%99%e7%9a%84%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4" class="header-anchor"&gt;&lt;/a&gt;这次我会保留的常用命令
&lt;/h2&gt;&lt;p&gt;后面如果我要继续检查目录，最常用的命令就是下面这几条。&lt;/p&gt;
&lt;p&gt;查看 COS 根目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coscmd list /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看 &lt;code&gt;uploads&lt;/code&gt; 目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coscmd list /uploads/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看新的课程封面目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coscmd list /uploads/course-cover/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看缩略图目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coscmd list /uploads/course-cover/thumbs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果以后再需要重配 &lt;code&gt;coscmd&lt;/code&gt;，我也只保留脱敏格式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;coscmd config -a xxx -s xxx -b xxx -r xxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="小结"&gt;&lt;a href="#%e5%b0%8f%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;小结
&lt;/h2&gt;&lt;p&gt;这次通过 &lt;code&gt;CLI + coscmd&lt;/code&gt; 排查 COS 目录之后，我确认了两件很实际的事：第一，本机原来的 &lt;code&gt;coscmd&lt;/code&gt; 配置确实有问题，需要重配才能恢复访问；第二，当前 COS 里的上传结构正处在“旧目录继续存在，新目录已经开始落地”的过渡阶段。&lt;/p&gt;
&lt;p&gt;对我来说，这份目录确认非常有价值，因为它把“我以为已经迁好了”变成了“我明确知道现在 Bucket 里到底是什么状态”。后面不管是做课程封面迁移、缩略图规则收口，还是老目录清理，我都可以基于这次确认过的结构继续推进。&lt;/p&gt;</description></item></channel></rss>