发表于: 2016-05-09 22:06:28
2 2338
【操作步骤】
1.我昨天从云存储服务器上调用图片URL时加上了权限、签名和有效期限,这种做法其实就是防盗链。
2.学习云存储服务器的数据迁移。
2.1 尝试阿里云的oss-import工具。参考链接:https://help.aliyun.com/document_detail/27044.html?spm=5176.doc27045.3.3.v2SXz0
2.2 实现功能:使用oss-import工具,可以把本地资源或者七牛云上的资源转移到阿里云上。
2.3 尝试使用七牛云“qrsync 命令行上传同步工具”
2.3.1 下载qrsync工具,并解压,能看到七个可执行文件。
2.3.2 建立配置文件local-qiniu.json。
2.3.3 执行sudo ./qrsync local-qiniu.json
2.4 尝试使用七牛云“qfetch 数据迁移工具”
2.4.1 下载到qshell_linux_386和qfetch_linux_386这两个可执行文件。
2.4.2 sudo ./qshell_linux_386 account <qiniu-AccessKey> <qiniu-SecretKey> 设置好七牛服务
2.4.3 sudo ./qshell_linux_386 alilistbucket <aliyun-DataCenter> <aliyun-Bucket> <aliyun-AccessKeyId> <aliyun-AccessKeySecret> [Prefix] <local-ListBucketResultFile> 这样就可以把阿里云Bucket上面的所有文件的key、size、puttime都保存在一个txt文本中
2.4.4 保存的txt文本中只能获取到资源的key,并不能得到资源链接,我编写了一个python脚本,这个脚本可以从txt文本中读取到每一行的key,然后在这个key前面加上阿里云的资源外链(bucket的属性如果是私有的,还需要加上签名)。
2.4.5 然后使用qfetch进行资源上传。
【知识总结】
1.数据迁移的概念:就是从别的服务器上把数据资源转移到云存储服务器上,如把资源从七牛云转移到阿里云、把资源从自己的服务器转移到阿里云或七牛云。
2.关于阿里云数据迁移服务,官方提供了四种手段:https://help.aliyun.com/knowledge_detail/6698338.html
2.1 通过API/SDK上传文件(速度慢,需要自己编写代码,其实原理就是遍历一下源服务器上的资源,然后一个一个上传到目标服务器,我感觉不怎么样)
2.2 通过API/SDK拷贝文件(适用于同一数据中心的bucket之间数据迁移,适用面太窄)
2.3 通过oss-import工具迁移文件(这个还不错)
2.4 通过云市场服务迁移文件(要收费)
3.阿里云使用oss-import工具进行数据迁移的步骤:
3.1 安装好oss-import后,要先配置一下conf/sys.properties文件,注意该文件里面的workingDir变量,要是你安装oss-import的目录,且不要以“/”结尾
3.2 确定好work_dir变量:export work_dir=/usr/local/oss-import
3.3 启动oss-import服务:cd $work_dir
nohup java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties start > $work_dir/logs/ossimport2.log 2>&1 &
3.4 编写好任务文件,照着程序中原有的local_job.cfg文件编写就可以
3.5 提交任务:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $work_dir/local_job.cfg
3.6 查看任务状态:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties stat detail
3.7 杀死进程(clean任务前必须先杀进程):ps axu | grep "ossimport2.jar.* start" | grep -v grep | awk '{print "kill -9 "$2}' | bash
3.8 清除任务:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties clean local_test
注意事项:
3.9 所有的命令都不要加sudo,普通用户执行就好。不然杀进程时就会报错:不允许的操作。
3.10 要给整个oss-import目录赋予可执行权限(我直接赋了777权限),不然会有很多小麻烦。
3.10 软件刚安装好,在安装目录下是没有master文件夹的,第一次启动服务后会建立出master、tmp、slave三个文件夹,但是这三个文件夹是没有可执行权限的,所以此时应该在oss-import目录下再执行“sudo chmod -R 777 *”赋予权限,不然会有很多小麻烦。
3.11 如果在刚submit了一个local_test任务,你又想再提交一次同名任务,那么操作顺序是“杀进程--清除任务--开启服务--提交任务--查看状态”
3.12 在编写任务文件local_test.cfg时,虽然你的任务类型有可能不是http,即srcType≠http,但是下面三句话也不能少,不然会报空指针异常:
httpListFilePath=c:/example/http.list
httpPrefixColumn=1
relativePathColumn=2
4.使用七牛云进行数据迁移的几种方法:https://segmentfault.com/a/1190000002547943
4.1 本地到七牛云,使用“qrsync 命令行上传同步工具”
4.2 别的云服务器上传到七牛云,使用“qfetch 数据迁移工具”
5.在ubuntu下,如果你看到一个文件的属性是“可执行文件 (application/x-executable)”,这种文件的打开方式是:sudo ./文件名
6.如果想从阿里云OSS服务器上把数据迁移到七牛云,应该这样:
先下载qshell插件(下载地址:https://github.com/qiniu/qshell),然后用alilistbucket获取所有的文件列表,然后拼接外链,再使用qfetch去抓取。
qshell插件提供了阿里云和腾讯云这两个接口命令,如果是其他云服务器,就只能先下载到本地,再上传到七牛云,可以使用qshell的qupload上传。(也可以使用qrsync工具)
【出现的问题(已解决)】
1.在使用七牛云存储的qrsync时,一定要注意json文件,要仔细检查,保证里面的值都没有输错,我刚开始就是因为在secret_key值后面多处了一个>,导致一直报错,错误提示:{"error":"bad token","reqid":"....","details":["UP/401"],"code":401}
2.在使用“qrsync 命令行上传同步工具”时,当你使用一个json配置文件上传过一次资源后,如果再想使用这个json再上传一次,就会失败,提示是:
2016/05/09 17:51:37.512762 [INFO] qbox.us/qrsync/v3/qrsync/qrsync.go:50: Syncing /home/caojunqi/test => ittask
2016/05/09 17:51:37.512876 [INFO] qbox.us/qrsync/v3/qrsync/qrsync.go:119: Processing /home/caojunqi/.qrsync/MzCCA5IjpvkWx3H-oy6duCjU.db
很明显是任务重复了,七牛云不像阿里云会提供一个clean方法,我的解决办法是,删除掉/home/caojunqi/.qrsync/目录下的所有东西。
3.在使用七牛云的qfetch工具时出现了一个错误,我的链接文本file也正确,一切设置都挺对的,但是报错了,错误提示:
Fetch http://ittask.oss-cn-shenzhen.aliyuncs.com/qiniu-favicon error due to Post http://iovip.qbox.me/fetch/aHR0cDovL2l0dGFzay5vc3MtY24tc2hlbnpoZW4uYWxpeXVuY3MuY29tL3Fpbml1LWZhdmljb25fMTM2MzEzMTM3MTI=/to/aXR0YXNrOmFsaXl1bi1xaW5pdS1mYXZpY29uXzEzNjMxMzEzNzEy: dial tcp: lookup iovip.qbox.me on 127.0.1.1:53: server misbehaving
发现问题:在终端输入“ping iovip.qbox.me”,提示“ping: unknown host iovip.qbox.me”,表明是DNS解析失败。
解决问题:在终端输入“sudo nano /etc/resolv.conf”可以看到本机使用的DNS服务器是“127.0.1.1”,把这个DNS服务器地址换一下,换成你当地的DNS服务器,然后再“ping iovip.qbox.me”就发现可以ping通了。
相关的知识点:电脑与电脑之间只能识别IP,不能识别域名,所以电脑需要一个DNS服务器来解析域名,你的电脑使用的DNS服务器可能无法解析一个域名,就会导致无法访问该域名,换个DNS服务器试试。
【出现的问题(未解决)】
【疑问】
评论