目录
简介
在 GitHub 或者 Gitee 等其他地方“白嫖“存储难免会遇到无法访问的时候,例如前段时间 jsDelivr 就因为被 DNS 污染导致无法访问、Gitee 公开仓库私有…
而这两种情况还好,可以使用 git 获取到数据,能拉取到本地,对于有服务器的同学,重新放到本地,替换一下访问链接就可以继续访问了。没有服务器或者没有任何备份程序的就很不友好了,可能会出现数据丢失的问题。
那么这个时候就推荐数据上云了,以腾讯云为例:可以将本地数据迁移至 COS。
对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性、低成本、可靠安全等优点。针对不同存储类型,腾讯云分别承诺标准存储服务可用性不低于 99.95%,低频存储可用性不低于 99.9%。
提到迁移,第一个想到的可能是 COS Migration 工具:
COS Migration 是一个集成了 COS 数据迁移功能的一体化工具。通过简单的配置操作,用户可以将本地数据迁移至 COS 中,它具有以下特点:
- 断点续传:工具支持上传时断点续传。对于一些大文件,如果中途退出或者因为服务故障,可重新运行工具,会对未上传完成的文件进行续传。
- 分块上传:将对象按照分块的方式上传到 COS。
- 并行上传:支持多个对象同时上传。
- 迁移校验:对象迁移后的校验。
但是呢,这篇文章推荐使用 COSCLI 工具。COS Migration 是使用 Java 语言开发的,在使用时需要依赖 JDK,Linux 环境需要 IFUNC 支持,确保环境 binutils 版本大于 2.20,对于小白用户不太友好。而 COSCLI 是使用 Go 语言开发,部署方便,且支持跨桶操作。
除此之外,之前还介绍过 COSCMD 的用法,那么 COSCLI 工具与 COSCMD 工具有什么区别?
COSCLI 工具使用 golang 构建,直接发布编译后的二进制包,用户在安装部署时无需预先安装任何依赖,开箱即用;COSCMD 工具使用 Python 构建,用户在安装时需先安装 Python 环境和依赖包。
COSCLI 工具支持设置存储桶别名,可以使用一个短字符串来代替
COSCLI 工具支持在配置文件内配置多个存储桶,且支持跨桶操作;COSCMD 工具在配置文件中只能配置一个存储桶,且跨桶操作命令过于冗长。
下载与安装配置
COSCLI 工具提供 Windows、Mac、Linux 操作系统的二进制包,通过简单的安装和配置后即可使用,具体请看官方文档:点我直达
以下仅以linux服务器为例:
单击 下载 Linux 版本 COSCLI,或运行以下命令下载 COSCLI:
wget https://github.com/tencentyun/coscli/releases/download/v0.13.0-beta/coscli-linux
运行以下命令重命名文件:
mv coscli-linux coscli
运行以下命令修改文件执行权限:
chmod 755 coscli
在命令行窗口中输入 ./coscli --version
,若打印出以下信息则代表安装成功:
coscli version v0.13.0-beta
配置参数
可以使用coscli –help命令来快速查看 COSCLI 的使用方法。在第一次使用时,执行./coscli命令,会进行初始化配置,需要输入Secret ID等信息,按步骤填写完成后,COSCLI 会默认在~/.cos.yaml的位置生成配置文件:
$ ./coscli
2023/05/27 13:01:46 Welcome to coscli!
When you use coscli for the first time, you need to input some necessary information to generate the default configuration file of coscli.
Input Your Secret ID:
后期也可以使用coscli config init命令在其他位置为 COSCLI 交互式地生成配置文件,或者可以直接手动编写 COSCLI 的配置文件。
配置文件中各配置项的说明如下:
配置项 | 说明 |
---|---|
Secret ID | 密钥 ID,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 子账号访问密钥管理。 |
Secret Key | 密钥 Key,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 子账号访问密钥管理。 |
Session Token | 临时密钥 token,当使用临时密钥时需要配置,若不使用可以直接按 Enter 跳过。 关于临时密钥的更多信息,详见 使用临时密钥访问 COS。 |
protocol | 网络传输协议,默认为 https。如需更改为 http,可直接进入配置文件进行修改即可。 |
APPID | APPID 是您在成功申请腾讯云账户后所得到的账号,由系统自动分配,可从 账号信息 中获取。一个存储桶的全称由 Bucket Name 和 APPID 这两个元素组成,格式为 <BucketName-APPID>,详情请参见 存储桶命名规范。 |
Bucket Name | 存储桶名称,和 APPID 一起构成存储桶全称,格式为 <BucketName-APPID>,详情请参见 存储桶命名规范。 |
Bucket Endpoint | 存储桶所在地域的域名,格式为 cos.<region>.myqcloud.com,其中 <region> 代表存储桶地域,例如 ap-guangzhou、ap-beijing 等,COS 支持的地域列表可参见 地域与访问域名。 |
Bucket Alias | 存储桶别名,配置后可以在使用时用 BucketAlias 代替 BucketName-APPID,减少所需输入的命令长度,如果不配置此项,BucketAlias 的值是 BucketName-APPID 的值。 |
OFS Bucket | 元数据加速桶标记,用于标识该桶是否开启 元数据加速 功能。目前元数据加速功能为公测功能,需要 联系我们 申请使用。公测期间暂不收费,您可以关注您的 站内信 或者 计费概述,了解最新的计费动态。 |
在初次配置时,COSCLI 只会要求您配置一个存储桶的信息,如果您希望配置多个存储桶,您后续可以使用 ./coscli config add 命令添加存储桶配置。如您需要修改配置文件,或获取更多有关配置文件的操作,请参考 config 命令 或使用 ./coscli config –help 命令来快速查看和配置文件相关的指令。
在正式开始使用指令之前,您可以使用 ./coscli –help 命令来快速查看 COSCLI 的使用方法。
操作示例
这里介绍一下cp和sync命令
cp 命令用于上传、下载或拷贝文件。
sync 命令用于同步上传、下载或拷贝文件。
与 cp 命令不同的是:sync 命令首先会对比同名文件的 crc64,如果 crc64 值相同则不进行传输。
这两个命令在上传和下载大文件时会自动启用并发上传/下载。当以分块形式上传/下载文件时,会默认开启断点续传。
cp 命令包含以下可选 flag:
flag 简写 | flag 全称 | flag 用途 |
---|---|---|
无 | –include | 包含特定模式的文件 |
无 | –exclude | 排除特定模式的文件 |
-r | –recursive | 是否递归遍历文件夹下所有文件 |
无 | –storage-class | 指定上传文件的存储类型(默认 STANDARD),更多存储类型,请参见 存储类型概述 |
无 | –part-size | 文件分块大小(默认32MB),单位MB |
无 | –thread-num | 并发线程数(默认并发5) |
无 | –rate-limiting | 单链接速率限制(0.1~100MB/s),单位MB/s |
无 | –meta | 上传文件的元信息。包括部分 HTTP 标准属性(HTTP Header)以及以 x-cos-meta- 开头的用户自定义元数据(User Meta)。文件元信息格式为 header:value#header:value,示例为 Expires:2022-10-12T00:00:00.000Z#Cache-Control:no-cache#Content-Encoding:gzip#x-cos-meta-x:x。 |
上传单文件
./coscli cp ~/example.txt cos://bucket1/example.txt
将本地 test 文件夹下的所有文件上传至 bucket1 桶中的 example 文件夹下
./coscli cp ~/test/ cos://bucket1/example/ -r
将本地 test 文件夹下的所有 .mp4 类型文件上传至 bucket1 桶中的 example 文件夹下
./coscli cp ~/test/ cos://bucket1/example/ -r --include .*.mp4
将本地 test 文件夹下的所有非 .md 类型文件上传至 bucket1 桶中的 example 文件夹下
./coscli cp ~/test/ cos://bucket1/example/ -r --exclude .*.md
将本地 dir 文件夹下有 dirA、dirB、dirC、dirD 四个文件夹,将 dir 文件夹下除 dirD 文件夹之外的所有内容上传
./coscli cp dir/ cos://bucket1/example/ -r --exclude dirD/.*
将本地 test 文件夹下的所有文件上传至 bucket1 桶中的 example 文件夹下,并以归档类型文件存储
./coscli cp ~/test/ cos://bucket1/example/ -r --storage-class ARCHIVE
将本地的 file.txt 文件上传至 bucket1 桶并设置单链接速率限制为1.3MB/s
./coscli cp ~/file.txt cos://bucket1/file.txt --rate-limiting 1.3
二次上传
如果出现了某些异常,或者手动停止掉后,想要重新上传,可以使用sync,该命令会对比同名文件的 crc64,如果 crc64 值相同则不进行传输。
coscli sync /yourpath/wp-content/uploads/ cos://bucket1/wp-content/uploads/ -r
使用小技巧
统计文件信息
列出 bucket1 存储桶内文件的统计信息
./coscli du cos://bucket1
列出 bucket1 存储桶 picture 文件夹下文件的统计信息
./coscli du cos://bucket1/picture/
列出 bucket1 存储桶 picture 文件夹下所有 .mp4 类型文件的统计信息
./coscli du cos://bucket1/picture/ --include .*.mp4
列出 bucket1 存储桶 picture 文件夹下所有非 .md 类型文件的统计信息
./coscli du cos://bucket1/picture/ --exclude .*.md
返回的结果示例如下,输出的信息包括:该桶各存储类型下的对象数量和大小、桶内对象总数、桶内对象总容量。
删除文件
命令格式
./coscli rm cos://<bucket-name>[/prefix/] [flag]
解释说明:
flag 简写 | flag 全称 | flag 用途 |
---|---|---|
-h | –help | 查看该命令的具体用法 |
无 | –include | 包含特定模式的文件 |
无 | –exclude | 排除特定模式的文件 |
-r | –recursive | 是否递归地遍历文件夹下所有文件 |
-f | –force | 强制删除(删除文件前不弹出确认信息) |
操作示例:
删除文件
./coscli rm cos://bucket1/fig1.png
删除 pictrue 文件夹下的所有文件
./coscli rm cos://bucket1/pictrue/ -r
更多关于 COSCLI 的使用方法请查看官网文档介绍