因为七牛临时域名的原因,一些老的数据连接都对不上,我们这边需要将一个 bucketA 到另外一个 bucketB 中。操作步骤如下
下载并 qshell
七牛官方下载页面下载可执行文件,因为我是 mac ,所以选择 qshell_darwin_x64,找个合适的路径,我的习惯是 $HOME/bin,配置好 PATH。
设置 account
$ qshell account AK SK name
新版本有个 name,老版本是没有的。有找个参数可以更好的作区分。
列出 bucket
$ qshell listbucket bucketA -o srccopy.txt
xx简历.png 500071 FuEnT1v7oou7--ahA5gO1VIy4EHY 15283671101562504 image/png 0
将 bucket 中的所有文件信息导出,BUT,这里我对七牛这点不满意,应该有个参数可以配置可以输出哪些文件信息,一股脑所有信息都抛出来了,但是这里是用 \t
分割的,那么我们做个切分也就 ok 了。
处理文件列表
来喽!这里突发奇想,来个 lua 脚本。就是爱折腾
function split( str,reps )
local resultStrList = {}
string.gsub(str,'[^'..reps..']+',function ( w )
table.insert(resultStrList,w)
end)
return resultStrList
end
sourceFile = io.open ("srccopy.txt","r");
toFile = io.open("tocopy.txt" ,"w");
y=1
for line in sourceFile:lines() do
arr=split(line,"\t")
name=arr[1]
toFile:write(name.."\n")
y=y+1
end
sourceFile:close()
toFile:close()
copy bucket
$ qshell batchcopy --force --failure-list failure-list.txt bucketA bucketB -i tocopy.txt
处理失败的我们可以记录下来,大部分是文件名已存在,我这里选择不覆盖,如果需要覆盖添加上 --overwrite
参数。
总结
这是第一次对 lua 的使用,感觉还挺轻量,以后还可以多使用 lua。
网友评论