Closed suncle1993 closed 6 years ago
我试了之后发现,新建的 bucket 必须和原 bucket 在同一个区(华东/华南什么的)才能进行 batchcopy,否则会报 incorrect zone
错误
后续我是借用了一个备案的域名然后qdownload备份下来的。 @lidawn 的方案可以一试
batchcopy是同一个区域的复制
@Flowsnow 卧槽,亮哥居然和我遇到同一个问题,已经放弃qiniu了,居然还有这样丧心病狂的操作。
@BIGBALLON 反正就是你很蛋疼,搞定了就彻底弃坑了,转向阿里oss了
可以说是相当辣鸡了,弃用弃用,七牛一生黑
@lidawn 的方法可行. 注意bucket在同一个分区。然后导出list,再用batchcopy,最后qdownload。
另外如果新建了一个bucket,仍然会再分配一个测试域名。 如果是写博客的朋友可以直接将原来的域名全部替换为新的测试域名。
PS: 已经弃用qiniu了
问题已解决,说下自己的解决过程。
从一个bucketA平移至另外一个bucketB
先下载qshell包到本机,解压,查看是否可以正常运行
➜ qshell-v2.2.0 ./qshell-darwin-x64 -v
QShell/v2.2.0 (darwin; amd64; go1.9)
执行./qshell-darwin-x64 account AK SK
配制自己的账号信息,AK/SK查看方法https://portal.qiniu.com/user/key,检验是否配制成功
➜ qshell-v2.2.0 ./qshell-darwin-x64 account
AccessKey: Your AK
SecretKey: Your SK
使用导出文件列表命令,导出需要迁移的bucketA文件列表
➜ qshell-v2.2.0 ./qshell-darwin-x64 listbucket bucketA tocopy.txt
tocopy.txt
中的的每行内容修改为仅有文件名➜ qshell-v2.2.0 ./qshell-darwin-x64 batchcopy --force --overwrite bucketA bucketB tocopy.txt
操作已完成
qshell batchcopy确实可行。
但是现在如果你没有实名认证就建不了另外的bucketB,然后就会要求你去实名认证
破七牛,弃坑
是不是最近才上线的一个月到期的说法,一直用了一年多了,最近才提示剩余5天收回。 要整体换图床了~
@vimiix 之前我用了2年没什么问题,后来好像是被人利用传播非法色情的东西,就被告了。就要求实名认证了。
@BIGBALLON 哦哦,这样哦,好可耻。
我的数据都迁移到 Ali OSS 了,写了一个自动化迁移工具,分享给大家。
转帖七牛云工程师在工单中回复的方法,我按照方法2.1成功。
您好, 1.您绑定自定义域名后可以继续使用
2.如果您没有域名,可以用下面方法下载 有两种方式来获取文件: 1. 您需要先新建一个同区域存储空间,会分配一个新的测试域名到新空间。 通过qshell batchcopy 到有域名的同区域空间然后再进行qdownload下载操作 1)qshell listbucket 原bucket名 list.txt (list出全部文件,https://github.com/qiniu/qshell/blob/master/docs/listbucket.md) 2)cat list.txt | awk '{print $1}' >list_final.txt ( 用awk获取list结果的第一列) 3)qshell batchcopy 原bucket名 新bucket名 list_final.txt (复制到新bucket的文件和原bucket文件名一致,https://github.com/qiniu/qshell/blob/master/docs/batchcopy.md) 4)qshell qdownload newfilelist.txt (newfilelist.txt为下载的配置文档,https://github.com/qiniu/qshell/blob/master/docs/qdownload.md)
qshell安装包及文档请参考https://developer.qiniu.com/kodo/tools/1302/qshell 如果您不熟悉命令行工具的安装使用,也可以结合文档最后提供的视频教程 https://developer.qiniu.com/kodo/tools/1302/qshell#9
2. 使用工具qrsctl https://developer.qiniu.com/kodo/tools/1300/qrsctl qrsctl get
参考 @veslam 的解答,我在 windows 10 中这样操作:
下载 qshell,使用命令行工具进入 qshell.exe
同一目录
密钥设置
qshell account -- ak sk name
在 个人中心 > 密钥管理 获取 ak
sk
,帐号名称 name
随便写
获取原空间文件名
列出原空间文件列表并保存到 list.txt
文件中
qshell listbucket 原空间名 -o list.txt
list.txt
文件有6列,不处理复制不了,只保留文件名这列,也就是第1列
cat list.txt | awk '{print $1}' > list-filename.txt
cmd.exe
没有 awk
命令,可以用 cmder,或者手动删除其它列
在网页中新建存储空间,存储区域一定要和原空间一样
复制
qshell batchcopy --force 原空间名 新空间名 -i list-filename.txt
下载
在 qshell.exe
同一目录中新建一个下载配置文件 download.txt
,配置如下:
{
"dest_dir": "本地目录",
"bucket": "新空间名",
"cdn_domain": "外链默认域名"
}
执行下载命令
qshell qdownload download.txt
@jing2si 感谢,还是不用七牛了》》
新建bucket要实名认证, 绑定域名也要实名认证, 也就是不实名认证的话这自己的数据就没办法弄出来了吧? 国内的产品真是不能用!
测试可行。 用java写了个简单的小工具,可以将文件备份到本地: link: https://gist.github.com/imbennie/2807a1bf600724a0df23b51bc8018bba
可以使用qrsctl
下载:
命令行辅助工具(qrsctl)_工具_对象存储 - 七牛开发者中心
#!/bin/bash
imgs=`./qrsctl listprefix bucketName ''`
i=0
echo $imgs | tr " " "\n" | while read line
do
if(($i>0))
then
echo $line
./qrsctl get bucketName $line ./$line
fi
i=$(($i+1))
done
用qrsctl 吧,用qshell的qdownload必须要备案的域名,否则只能每天用临时域名下载10GB……太可怕
存的内容较少的话,在七牛云的"对象存储"界面:
@Xiaoxiaoguai421 亲测有效,简单实用,谢谢!
国内的东西没法用,所以我选择GCP和AWS
done!