使用七牛云托管静态内容
七牛云可托管任何静态内容,包括:html、视频、图片等.将本地图片上传到七牛云时需要使用到qshell工具。
qshell安装及使用
- 下载qshell并设置AK SK
- 安装qshell
sudo cp ~/software/qshell-v2.3.6/qshell_linux_x64 /usr/bin/qshell
执行上面命令后就可使用qshell了.
- qshell使用
添加密钥和账户名称
qshell account <Your AccessKey> <Your SecretKey> <Your Name>
TIP
ak和sk都可在七牛平台中查看到,name是你的命令,可随便取个.
批量上传静态内容到七牛云
需求: 在md文件中可以使用七牛镜像存储里的图片地址,而不用经过一系列手动上传图片复制图片链接的操作.
思路:
1: 通过qupload上传图片;
2: 通过脚本获取上传到七牛的图片链接;
3: copy链接到md文件中.
- 上传图片并生成markdown格式的图片链接
脚本内容如下:
vim getmdLink.sh
添加
bash
#!/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://# cache.echoxu.cn/blogimg/"]}' -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
添加如下内容:
bash
# custorm aliases
alias gml='cd ~/software/vuepress && bash getmdLink.sh'
使.bashrc生效,执行source ~/.bashrc
这样通过gml
就可以上传图片到七牛.
注意
七牛每月只有10G下载流量以及10w次get push操作; 刷新目录后面要带/,每天刷新目录的次数为10,建议等文章或图片全部done后再发布到七牛; 用batchdelete删除空间文件再上传文件到七牛后还是会有缓存,具体10分钟还是1小时没计算。