很多用户有需求将阿里对象存储文件同步到七牛空间里面,对此,七牛提供了相应的 qshell 工具以及 qfetch 工具配合达到迁移的效果,下面以一个具体的实例描述同步过程:
首先需要下载七牛对应的 qshell 工具 以及 qfetch 工具。使用 qshell 工具的主要目的是获取一份包含 OSS 文件的外链的文本文件,如果可以获取到,就可以省略 qshell 工具的步骤只需要使用 qfetch 就可以了。
1、使用 qshell account <AK> <SK> 设置或显示当前用户的 AccessKey 和 SecretKey。
2、使用 qshell 里面的 alilistbucket 命令 列举出阿里 OSS 里面的文件的目录列表。
此例中的 OSS 文件列表如下:
qshell alilistbucket <DataCenter> <Bucket> <AccessKeyId> <AccessKeySecret> [Prefix] <ListBucketResultFile>
其中 DataCenter Bucket AccessKeyId AccessKeySecret 要和 OSS 里面相对应。
qshell 运行的命令如下:
qshell alilistbucket oss-cn-shanghai.aliyuncs.com alitoqiniu xxx xxx aliyuntoqiniu.txt
如果不写 Prefix 则列举出所有的文件,后面的 aliyuntoqiniu.txt 也可以写成绝对路径。
运行后可以看到本地 aliyuntoqiniu.txt 里面的文件如下:
3、使用 qfetch 工具将这个文件里面的文件批量抓取到七牛空间,但是 qfetch 抓取的是可以访问到的文件的外链,所以在这之前还需要对上面的 aliyuntoqiniu.txt 里面的文件拼接成 OSS 里面文件外链的形式。这一步可以使用 linux 下 awk 文本处理工具进行拼接,这里直接给出命令如下:
cat aliyuntoqiniu.txt | awk '{print "http://alitoqiniu.oss-cn-shanghai.aliyuncs.com/"$1}' >alitoqiniu.txt
再次 cat alitoqiniu.txt 里面的文件列表如下:
4、使用 qfetch 工具进行同步,这里直接给出同步命令:
qfetch -ak='xxx' -sk='xxx' -bucket='tttest' -file='alitoqiniu.txt' -worker=300 -job='demo' | tee diff.log
至此即同步成功,可以看到七牛空间里面也有相关的文件了:
答案来自@七牛开发者中心