gitee图床迁移github,使用免费cdn加速
gitee个垃圾玩意,图床都禁用,以后不再使用国产这些东西,容易被坑。
晚上花了点时间把blog的图床由gitee迁移github,并且使用cdn jsdelivr加速,在没有梯子情况下,也可以看到blog引用的图片。
我使用的是typora+picgo+github+cdn jsdelivr的组合方式。
第一步,先把gitee上的图床仓库迁移到github
1.从gitee clone下来,在github创建仓库,push github仓库,保持仓库名和目录和gitee的相同,在master分支。
第二步,替换blog内图床的地址
比如我的图床一个图片 https://gitee.com/yulewo123/mdpicture/raw/master/docs/20201010000942.png
需要替换为 https://raw.githubusercontent.com/zhangyj131/mdpicture/master/docs/20220326144026.png
即把文件名前面的替换即可,这里写个shell进行替换。
但是 https://raw.githubusercontent.com域名,由于网络问题,许多人看不了,因此使用cdn域名 https://fastly.jsdelivr.net/gh加速,最终替换为
https://fastly.jsdelivr.net/gh/zhangyj131/mdpicture/docs/20220326144026.png 切记url中没有master。
具体替换shell内容如下
#!/bin/bash
#文件名replace.sh
#使用说明:把该shell放到和markdown文件同目录下,然后右键Git Bash here,执行 sh ./replace.sh 即可
oldurl="https://gitee.com/yulewo123/mdpicture/raw/master/docs" #改为自己旧url,比如gitee url
newurl="https://fastly.jsdelivr.net/gh/zhangyj131/mdpicture" #改为自己新url,比如github url
echo "原url=${oldurl}"
echo "新url=${newurl}"
#把url中的/替换为\/ 参考https://unix.stackexchange.com/questions/315473/how-to-obtain-instead-after-a-sed-substitution
oldurlConvert=`echo ${oldurl}|sed 's/\//\\\\\//g'` #echo "https://gitee.com/yulewo123/mdpicture/raw/master/docs"|sed 's/\//\\\//g' 结果 https:\/\/gitee.com\/yulewo123\/mdpicture\/raw\/master\/docs 但是表达式内要多加\
echo "oldurlConvert=$oldurlConvert"
newurlConvert=`echo ${newurl}|sed 's/\//\\\\\//g'`
echo "newurlConvert=${newurlConvert}"
#####################执行#####################
for fd in ./*.md
do
echo "处理文件-> "$fd
#sed -i 's/$oldurlConvert/$newurlConvert/g' "$fd" #用单引号无法进行替换,在shell里用sed,如果有$这样的特殊字符,单引号要换成双引号才可以
sed -i "s/$oldurlConvert/$newurlConvert/g" "$fd" #用"$fd" 原因是文件名可能带空格
#sed -i 's/https:\/\/gitee.com\/yulewo123\/mdpicture\/raw\/master\/docs/https:\/\/fastly.jsdelivr.net\/gh\/zhangyj131\/mdpicture\/docs/g' "$fd" #实例
done
echo "转换成功...."
第三步,picgo内改为github图床,并自定义图床url,https://fastly.jsdelivr.net/gh/用户名/图床仓库名
如此搞定,还是感觉使用github安全,但是这个cdn,不知道存活多久,但愿https://fastly.jsdelivr.net/gh
能长久。
PS:写完这个shell,后来才想到,在idea内可以全局替换的,白花了这么长时间。
后记
后来查了下,gitee条款本身不支持图床,jsdelivr其实也不支持图床协议内容,具体可以看知乎,骂错gitee了,不管怎么样,还是不使用gitee作为图床了,虽然最后3.28号gitee又让使用图床了。