七牛云跨账号批量同步空间中的文件
步骤
-
下载七牛的同步工具qshell http://developer.qiniu.com/docs/v6/tools/qshell.html
1)以windows版本为例,下载压缩包,找到对应的qshell.exe,并修改成qshell.exe.
2)注意不要双击打开qshell.exe,直接在命令行工具打卡,如果需要全局使用qsehll,可以在环境变量path中添加即可 -
登录到当前账户下 qshell account
AccessKey 七牛账号对应的AccessKey 获取
SecretKey 七牛账号对应的SecretKey 获取
Name 账户的名字, 可以任意取,和在七牛注册的邮箱信息没有关系, 只是qshell本地用来标示<ak, sk>,没有实际作用,但是必须填写,随意填写即可,但是会保存到本地的 -
使用listbucket命令列举出需要复制的当前空间 https://github.com/qiniu/qshell/wiki/listbucket
使用的命令 qshell listbucket [–prefix ] [-o ]
本例中的命令如下:
qshell listbucket tdcmhd --prefix upload -o list.txt
或者使用增强版,对版本要求比较高
qshell listbucket2 tdcmhd --prefix upload -o list.txt -
上步操作后会在当前目录下生成一个名为list.txt的list文件列表,格式如下:
upload/0305/st/bj.png 281964 FhkBwkUrAysSQmiAQWizaY4GLpCZ 15517819772905311 image/png 0 upload/0305/st/c1.png 115952 Fo9ltJfXXrGneiaV8HWvcl_yNv8q 15517819775335272 image/png 0 upload/0305/st/c2.jpg 26163 FlgSdx7x7SwuRkEvqKAy368fmm7K 15517819776546157 image/jpeg 0 upload/0305/st/c3.jpg 32367 FtswVoYQjbw6IApSuUM5efgAq_8C 15517819777817569 image/jpeg 0 upload/0305/st/c4.jpg 81493 FnksTFlvOmERNIgo2U-JqMFlNkP5 15517819779717613 image/jpeg 0 upload/0305/st/c5.jpg 22751 FulBDzVJXE6tdV14V9QyzoxQstDn 15517819781199123 image/jpeg 0
-
而我们只需要得到最前面的文件key就可以了,可以使用一条awk字符处理命令就可以了 (这里一定要注意不能直接使用导出的list.txt,必须把文件名单独取出来,否则后面copy会无效。)
linux:cat cp.txt | awk ‘{print $1}’ >cpp.txt
window:excel处理或者编辑器使用正则处理出来
这样就在当前目录生成了一个如下只包含文件的key的txt文件list.txtupload/0305/st/bj.png
upload/0305/st/c1.png -
使用batchcopy命令将文件同步到需要复制的空间里面https://github.com/qiniu/qshell/wiki/batchcopy
这里直接给出命令,将copytest1空间文件复制到copytest2空间
qshell batchcopy [–force] [–overwrite] [–success-list ] [–failure-list ] [-i ]qshell batchcopy tdcmhd tdcmnovel --success-list success.txt --failure-list failure.txt -i "list.txt"
查看当前目录下success.txt就可以看到复制成功的文件