使用七牛云托管静态内容

七牛云可托管任何静态内容,包括:html、视频、图片等.将本地图片上传到七牛云时需要使用到qshell工具。


qshell安装及使用

  • 下载qshell并设置AK SK

qshell下载地址

  • 安装qshell

sudo cp ~/software/qshell-v2.3.6/qshell_linux_x64 /usr/bin/qshell

执行上面命令后就可使用qshell了.

  • qshell使用

添加密钥和账户名称

qshell account <Your AccessKey> <Your SecretKey> <Your Name>

提示

ak和sk都可在七牛平台中查看到,name是你的命令,可随便取个.

批量上传静态内容到七牛云

需求: 在md文件中可以使用七牛镜像存储里的图片地址,而不用经过一系列手动上传图片复制图片链接的操作.

思路:

1: 通过qupload上传图片;

2: 通过脚本获取上传到七牛的图片链接;

3: copy链接到md文件中.

  • 上传图片并生成markdown格式的图片链接

脚本内容如下:

vim getmdLink.sh

添加

#!/bin/bash

echo "----------------------------------"
echo ""
echo "开始上传图片到七牛!"
echo ""
echo "----------------------------------"

#移动2小时前的文件到docV1imgbak,这样的目的是防止重复上传已经上传过的文件.
# -mtime +1 <=> 1天前
# -cmin n 对文件状态的最近一次修改是在 n 分钟之前

find /home/echoxu/software/vuepress/docs/.vuepress/public/images -type f  -cmin 120  | xargs -i mv {} /home/echoxu/software/docV1imgbak/

qshell qupload2 --thread-count=10 --rescan-local  --src-dir=/home/echoxu/software/vuepress/docs/.vuepress/public/images  --bucket=blog   --success-list=/home/echoxu/software/docV1imgbak/success.txt --failure-list=/home/echoxu/software/docV1imgbak/failure.txt --overwrite-list=/home/echoxu/software/docV1imgbak/overwrite.txt  --up-host="http://upload.qiniu.com"



echo "----------------------------------"
echo ""
echo "成功上传图片到七牛!"
echo ""
echo "----------------------------------"

# 获取图片名称并修改为图片上传到七牛存储的链接地址

dir=/home/echoxu/software/vuepress/docs/.vuepress/public/images
rm -rf /home/echoxu/software/vuepress/getmdlinkBefore.txt 2> /dev/null
for filename in ${dir}/*;do
        echo $filename >> /home/echoxu/software/vuepress/getmdlinkBefore.txt
done
rm -rf /home/echoxu/software/vuepress/getmdlinkAfter.txt  2> /dev/null
cat /home/echoxu/software/vuepress/getmdlinkBefore.txt | sed 's/\/home\/echoxu\/software\/vuepress\/docs\/\.vuepress\/public\/images/\!\[wwwechoxu\]\(https:\/\/image.echoxu.cn\//g' | sed 's/$/\)/g' >> /home/echoxu/software/vuepress/getmdlinkAfter.txt
echo "图片链接地址已保存到getmdlinkAfter.txt,请打开getmdlinkAfter.txt并复制里面的内容到vuepress中使用."
# 以下内容在此次需求中用不到,但如果想刷新cdn缓存可取消如下代码的注释
# echo ""
# echo "----------------------------------"
# echo "上传结束,正在刷新缓存..."
# echo ""
# echo ""
# # 刷新 CDN 缓存
# ak="ak密钥"
# token=$(echo "/v2/tune/refresh" |openssl dgst -binary -hmac "sk密钥" -sha1 |base64 |tr "+/" "-_")
# result=$(curl -X POST -H "Authorization: QBox $ak:$token" http://fusion.qiniuapi.com/v2/tune/refresh -d '{"dirs":["https://# image.echoxu.cn/"]}' -H 'Content-Type: application/json')
# code=$(echo $result | awk -F ',' '{print $1}' | awk -F ':' '{print $2}')
# urlSurplusDay=$(echo $result | awk -F 'urlSurplusDay' '{print $2}' | awk -F '":' '{print $2}' | awk -F ',' '{print $1}')
# dirSurplusDay=$(echo $result | awk -F : '{print $13}' | sed  's/.$//g')
# if [[ $code = 200 ]]; then
#   echo "----------------------------------"
#   echo "刷新成功!"
#   echo "本日剩余url刷新次数为$urlSurplusDay"
#   echo "本日剩余dir刷新次数为$dirSurplusDay"
#   echo "----------------------------------"
#   echo "欢迎访问:"
#   echo "https://image.echoxu.cn"
#   echo ""
# elif [[ $code = 400031 ]]; then
#   echo "请求中存在无效的 url,请确保 url 格式正确"
# elif [[ $code = 400032 ]]; then
#   echo "请求中存在无效的域名,请确保域名格式正确"
# elif [[ $code = 400034 ]]; then
#   echo "请求次数超出当日刷新限额,请联系七牛技术支持"
# elif [[ $code = 400036 ]]; then
#   echo "无效的请求 id"
# elif [[ $code = 400037 ]]; then
#   echo "url 正在刷新中"
# elif [[ $code = 500000 ]]; then
#   echo "服务端内部错误,请联系技术支持"
# else
#   echo "未知错误,你脚本有问题!"
# fi


复制getmdlinkAfter.txt里的内容,在markdown文件中直接引用即可.

  • 定义上传图片操作的别名

vim ~/.bashrc

添加如下内容:

# custorm aliases
alias gml='cd ~/software/vuepress && bash getmdLink.sh'

使.bashrc生效,执行source ~/.bashrc 这样通过gml就可以上传图片到七牛.

注意

七牛每月只有10G下载流量以及10w次get push操作; 刷新目录后面要带/,每天刷新目录的次数为10,建议等文章或图片全部done后再发布到七牛; 用batchdelete删除空间文件再上传文件到七牛后还是会有缓存,具体10分钟还是1小时没计算。

上次更新:
贡献者: iEchoxu