qsctl
概述
qsctl 是云平台对象存储提供的客户端高级命令行工具,用于管理云平台的对象存储资源。qsctl 提供了强大的类 UNIX 命令,所有的 qsctl 命令均支持批量操作。
云平台的对象存储建议用户下载使用最新版本的 qsctl,若您仍需查看 qsctl v1.x 版本的相关文档,请点击 qsctl v1 文档。
安装
下载安装
- 
直接点击此处,根据客户端操作系统版本,下载相应安装包。若无特殊要求,QingStor 对象存储建议下载最新版本。 
- 
本地解压安装包后,即可运行。这里以 MacOS 操作系统,安装 qsctl v2.4.3 版本为例,详细操作如下图所示。   
修改配置
在正式使用 qsctl 工具前,用户需修改相应的配置文件,从而使其能正常工作。在载入配置文件时,qsctl 会按照如下顺序进行尝试,一旦读取成功便不再尝试下一个配置文件。
- 
用户通过 -c参数指定的配置文件。
- 
配置文件: ~/.qingstor/config.yaml。
- 
配置文件: ~/.config/qingstor/config.yaml。
- 
配置文件: /etc/qingstor/config.yaml。
以上为类 Unix 系统下的配置文件路径,对于 Windows 用户而言,配置文件路径为 C:\User\{\%USERPROFILE\%}\.qingstor\config.yaml。
详细操作步骤如下:
- 
在 管理控制台申请 API 密钥,并下载保存。 
- 
根据前文信息,依次查看是否存在默认配置文件: cat ~/.qingstor/config.yaml cat ~/.config/qingstor/config.yaml cat /etc/qingstor/config.yaml
- 
若以上文件均不存在,即说明无默认配置文件,需按照如下步骤手动创建配置文件。 touch qsctl_config.yaml
- 
按如下格式填写配置相关信息。 access_key_id: 'ACCESS_KEY_ID_EXAMPLE' secret_access_key: 'SECRET_ACCESS_KEY_EXAMPLE' zone: 'zone_name' host: 'qingstor.com' port: 443 protocol: 'https'说明: - 
access_key_id与secret_access_key根据步骤 1 中下载的 API 密钥进行填写。
- 
zone,host,port与protocol参数为待访问的对象存储的区域名、域名、端口号及协议类型。公有云维持默认即可,私有云环境需根据实际情况进行填写。
- 
host参数为待访问的对象存储域名,该域名 URL 不包含 Zone 字段。
- 
配置文件默认使用 HTTPS 访问方式,若需修改为 HTTP 访问方式,可按照如下内容填写。 port: 80 protocol: 'http'
 
- 
升级
变更日志
详见 qsctl changelog。
兼容性说明
- 
配置文件中,相关字段更新如下。 # 原字段 qs_access_key_id: qs_secret_access_key: # 更新为如下字段: access_key_id: secret_access_key:
- 
qsctl 自 v2.4.3 不再从如下路径读取配置文件。 ~/.qingcloud/config.yaml
- 
对相关命令做出的变更说明如下。 命令 说明 cp,mv - 
暂时取消对 include、exclude、--rate-limit和workers选项的支持。
- 
对本地文件夹的操作在路径结尾是否添加 /时行为有所不同。
 sync - 
暂时取消对 include、exclude、--rate-limit和workers选项的支持。
- 
暂未添加对 --delete选项的支持。
- 
默认修改为非递归操作,如果需要递归同步子目录,请添加 -r选项。
 ls 默认修改为只显示文件名的操作,如需显示详细信息,请添加 -l选项。rm 暂时取消对 include、exclude、--rate-limit和workers选项的支持。
- 
使用
qsctl v2.2.0 中移除了之前添加的交互式的配置程序。若您仍需要进行交互式配置,建议使用 v2.1.2 版本。
v2.1.2 版本中,系统在您首次使用 qsctl 且未在默认目录下检索到配置文件时,便会启动该交互配置。您只需要根据命令行的提示输入或选择配置内容即可。配置完成后,配置程序会根据您输入的信息,在系统中生成如下配置文件。
<主目录>/.qingstor/config.yaml说明:
- 
具体的配置文件的位置会根据您的系统而有所不同。 
- 
在类 Unix 操作系统下,配置文件会生成在 ~/.qingstor/config.yaml。
- 
在 Windows 操作系统下,配置文件会生成在 C:\User\{\%USERPROFILE\%}\.qingstor\config.yaml。
命令列表
| 命令 | 描述 | 
|---|---|
| cat | 输出远程对象内容至标准输出。 | 
| cp | 复制本地文件至对象存储的 Bucket,或从对象存储的 Bucket 复制对象至本地。 | 
| ls | 列出本用户下创建的所有对象存储的 Bucket,或列出给定对象存储的 Bucket 中给定前缀下的所有对象。 | 
| mb | 在对象存储服务端创建一个新的 Bucket。 | 
| mv | 移动本地文件至对象存储的 Bucket,或移动对象存储 Bucket 中的对象至本地。 | 
| presign | 生成对象存储的 Bucket 指定对象的临时下载链接。 | 
| rb | 从对象存储删除 Bucket。 | 
| rm | 从对象存储 Bucket 删除一个对象或给定前缀下的所有对象。 | 
| stat | 查看一个指定的对象存储的对象信息。 | 
| sync | 同步本地目录和对象存储目录。 | 
| tee | 从标准输入读取内容并上传至对象存储的 Bucket。 | 
查看帮助
- 
查看 qsctl 的命令列表和简易教程,可以通过 -h参数打印出来:qsctl -h
- 
查看 qsctl 的某个命令的详细说明和示例,可执行如下命令行。 <command>为待查看的具体命令,可根据命令列表中的内容进行替换。qsctl <command> --help
上传文件
- 
将本地文件上传至对象存储的 Bucket 中: qsctl cp /path/to/file qs://mybucket/filename说明: - 
若不指定 -c参数,则使用默认配置文件。
- 
命令行中 /path/to/file为本地待上传文件,需根据实际情况进行修改。
- 
命令行中 qs://mybucket/filename为对象存储 Bucket 中文件路径,需根据实际情况进行修改。其中若不指定filename,则上传后文件名根据源文件名创建;若指定filename,则将源文件重命名为filename进行存储。
 
- 
- 
将本地文件夹上传至对象存储的 Bucket 中: qsctl cp /path/to/folder qs://mybucket/parent/ -r
- 
将本地文件夹下的所有文件上传至对象存储的 Bucket 中: qsctl cp /path/to/folder/ qs://mybucket/parent/ -r说明: - 
若待上传的对象是文件夹,则源文件为 /path/to/folder。
- 
若待上传的对象是文件夹下的所有内容,则源文件为 /path/to/folder/。需注意两者的区别。
- 
-r参数用于递归地复制文件夹及其子文件夹。所以使用该参数时,源路径与目标路径必须都是目录。
 
- 
下载文件
执行如下命令行,从对象存储的 Bucket 中下载文件至本地:
qsctl cp qs://mybucket/filename /path/to/file说明:
- 
与上传文件至对象存储 Bucket 的区别在于源路径与目标路径的位置不同。 
- 
其他用法均与上传文件至对象存储 Bucket 保持一致。 
移动文件
mv 操作与 cp 操作对文件夹与文件夹中的文件的处理逻辑相同,请参考前文内容。
数据同步
sync 命令用于本地目录与对象存储目录的数据同步。故该操作的源路径与目标路径必须都是目录。由于对象存储没有目录概念,所以必须以 / 结尾。
类 Unix 系统,本地文件夹须以 / 结尾;若为 Windows 系统请替换为 \。若本地文件夹不添加结尾字符,则系统会针对本地文件夹的父目录进行同步操作。
- 
同步 QingStor 对象存储目录至本地文件夹。 qsctl sync qs://mybucket/test/ /path/to/dir/ -r
- 
仅同步本地文件夹中更新的文件(不同步目标路径中不存在的文件)。 qsctl sync . qs://mybucket/test/ -r --update --existing说明: - 
--update参数用于指定仅同步源路径中(比目标路径)更新的文件。
- 
--existing参数用于指定仅复制已存在于目标目录中的文件。对于目标目录中不存在的文件,不做同步。
- 
--dry-run参数可用于显示哪些文件将会被同步(但并不真正执行同步操作),用于确认,避免误操作。
 
- 
查看文件信息
ls 的结果不能保证有序,请勿依赖该命令来遍历显示顺序。
- 
列出该用户的所有 Bucket。 qsctl ls
- 
列出指定 Bucket 名为 mybucket下的所有对象。qsctl ls qs://mybucket -R说明: - 
-R参数用于递归地显示文件夹及其子文件夹下的对象。
- 
若不指定 -R参数,Bucket 若有文件夹时,则仅显示文件夹名,不显示文件夹内的文件。
- 
输出内容如下所示。     
 
- 
- 
以列出指定 Bucket 名为 mybucket下所有对象的详细信息。qsctl ls qs://mybucket -lRh说明: - 
-l参数用于显示文件的详细信息。
- 
-h参数用于转换文件的大小。
- 
输出内容如下所示:   
 
- 
查看统计信息
- 
查看指定 Bucket 名为 mybucket的统计信息。qsctl stat qs://mybucket输出结果:   
- 
查看指定对象信息。 qsctl stat qs://mybucket/dir/to/test输出结果:   
- 
查看指定对象信息,并自定义格式输出。 qsctl stat qs://mybucket/dir/to/test --format="name:%n, size:%s"输出结果:   说明: format参数用于传入格式化输出字符串。其中可用的有如下内容。- 
%F(文件类型)
- 
%h(文件内容的 etag 信息)
- 
%n(文件名)
- 
%s(文件大小,单位为字节)
- 
%y(最后一次数据修改的时间,显示为可读模式)
- 
%Y(最后一次数据修改的时间,显示为 Unix 时间戳)
 
- 
tee
从标准输入上传文件至对象存储。qsctl 将不会像 Linux tee 命令那样将内容绑定至标准输出。
cat /path/to/file | qsctl tee qs://mybucket/filenameqsctl shell
自 qsctl v2.2.0 版本以来,对象存储新加入了交互式的 shell 界面,包含更多的引导和提示信息,推荐新用户使用。若用户需使用 qsctl 开发脚本,建议直接使用前文介绍的命令模式。
对象存储将所有命令执行中的交互都移动至 shell 中,包括进度条,删除 bucket 时的确认输入,删除 object 时的确认等。并在命令行直接执行时移除了这些交互效果,以便更好的支持用户使用脚本进行操作。除此之外,用户在终端与 qsctl shell 中输入同样指令所得到的结果是一致的。
- 
执行如下命令,进入命令行界面。 qsctl shell
- 
命令行界面如下下图所示。   
- 
根据提示,进行相关操作即可。在命令行中,对象存储新增了对历史命令和自动补全的支持。详细说明如下。 - 
在行开头可以自动提示补全可用命令。 
- 
输入 qs://可以自动提示补全用户的 Bucket 信息。
- 
空格后可以自动提示补全本地文件信息。 
- 
输入 -可以自动提示补全当前命令可用 flag 信息。
 
-