七牛云链接失效,临时下载到本地,然后转到阿里云

519 阅读2分钟

七牛云链接失效,神烦,后来提交工单,回复了解决方案,但是嫌弃麻烦,琢磨了下。 自己写了个脚本下载到本地,然后再用命令上传到阿里云。 只适用于mac....

七牛云上失效链接的文件,下载到本地

  • 先下载qrsctl,复制本地这个文件的路径
  • 修改这个文件的权限 chmod +x /Users/zhm/Downloads/qshell-v2.3.6/qrsctl,这里注意路径
  • 登录到七牛云 /Users/zhm/Downloads/qshell-v2.3.6/qrsctl login 账号 密码
  • 新建文件qiniuyun_down.sh,复制下面的内容,配置前面两个路径,执行这个脚本sh qiniuyun_down.sh就可以了!
#!/bin/bash

# !!!!!对 这里请必须配置qrsctl的路径和你要保存到哪个文件夹下面
# 假设你有 foods balls两个bucket,而你的想要保存的本地文件夹是 /Users/xx
# 执行此脚本之后,/Users/xx里面自动生成两个文件夹foods和balls,里面有对应的文件

# 你自己的 qrsct安装路径
qrsctlPath='/Users/zhm/Downloads/qshell-v2.3.6/qrsctl'
# 你自己的 你想把图片放在哪个文件夹下面
saveDirectory='/Users/zhm/Pictures/blog'

# 下载某一个bucket里面的所有文件
downBucketFiles(){
    bucket=$1
    echo "$bucket"
    filenamePath="${saveDirectory}/${bucket}.txt"
    # filenamePath=$saveDirectory/$bucket.txt
    # 将某个bucket所有的文件名放进本地文件filenamePath
    $qrsctlPath listprefix $bucket "" > $filenamePath
    # 这里我想将bucke作为子目录,如果不用的话,不用写这个
    # saveDirectory=$saveDirectory/$bucket
    saveBucketDirectory="${saveDirectory}/${bucket}"
    mkdir $saveBucketDirectory
    # i是为了第一行不要的 TODO 不会优化== 
    i=1
    # 拿到所有的文件名之后 循环下载
    for line in $(cat $filenamePath)
    do 
        if [ $i -gt 1 ]
        then
        filename=$line
        localFilePath="${saveBucketDirectory}/${filename}"
        # 下载
        $qrsctlPath get $bucket $filename $localFilePath
        fi
        i=$(($i+1))
    done
    # 删除创建的txt
    rm $filenamePath
}

# 下载各个bucket里面的文件
execDownload(){
    # 值是这样的[room imgs library baby]
    buckets=$($qrsctlPath buckets)
    strLength=${#buckets}
    # room imgs library baby
    buckets=${buckets:1:$strLength-2}
    echo "$buckets"
    # 循环拿到每个bucket TODO 明显可以优化
    # !!!!特别奇怪的点,这里的j不能换成i,可能和作用域有关系吧,踩了一个深坑,半天才找到bug
    j=1
    while((1==1))
    do
        bucket=`echo $buckets|cut -d " " -f$j`
        if [ "$bucket" != "" ]
        then
            ((j++))
            echo "----- $bucket start download-----"

            downBucketFiles $bucket;
            echo "-----$bucket finish download-----"
        else
            break
        fi
    done

}
echo "-----函数开始执行-----"
execDownload
echo "-----函数执行完毕-----"

上传到阿里云

下面按理说也可以写进去脚本,没写,照着官网看了下,各位按需配置。

cd ~
curl -o ossutilmac64 http://gosspublic.alicdn.com/ossutil/1.6.0/ossutilmac64
chmod 755 ossutilmac64
./ossutilmac64 config
# 该命令创建将一个配置文件,在其中存储配置信息。 请输入配置文件路径(默认为:/home/user/.ossutilconfig,回车将使用默认路径。如果用户设置为 其它路径,在使用命令时需要将--config-file选项设置为该路径): 
# 未输入配置文件路径,将使用默认配置文件:/home/user/.ossutilconfig。 
# 对于下述配置,回车将跳过相关配置项的设置,配置项的具体含义,请使用"help config"命令查看。 
# 请输入endpoint:http://oss-cn-shenzhen.aliyuncs.com
# 请输入accessKeyID:yourAccessKeyID
# 请输入accessKeySecret:yourAccessKeySecret uOPouBlhXpI9J2KSgB9ra5tUCQEcHn
# 请输入stsToken:我没有这个没输入,回车了

# 新建目录
./ossutilmac64 mkdir oss://blog-huahua/
# 上传文件夹
./ossutilmac64 cp -r /Users/zhm/Pictures/blog oss://blog-huahua/blog/

缺点

  • 只适用mac
  • 没有捕获报错信息
  • 其实前面几步也可以写进脚本 但是不会 哈哈哈

ossutilmac64的介绍