由于以前有个新浪的图床,还挺好用,并且免费,本身博客的图片上传到其上面也挺方便的,可是,前几周吧,忽然图片就不能访问了,以前原本是想经过添加 meta 头来解决的,可是发现没有效果。因而就本身搞了个 阿里云的OSS, 主要用做为 图床。前段时间由于数据分析写报告时,特意学了Shell,恰好Shell 就适合来处理这种数据量不是很大的数据,因而就花了点时间来迁移图床了。html
#!/bin/sh rm -rf blog_url_list get_img_url() { for url in `cat blog_url_list`; do if [ `curl -s $url | awk '/sinaimg.cn/ {print $0}' | wc -l` -gt 0 ] then folder_name=`curl -s $url | awk '/postTitle2|postTitle/ {print $0}' | cut -d "<" -f 2 | cut -d ">" -f 2 | sed 's/ //g'` if [ ! $folder_name ]; then folder_name=`curl -s $url | awk '/postTitle2|postTitle/ {print $0}' | sed 's/ //g' |cut -d "<" -f 3 | cut -d ">" -f 2` fi mkdir "$folder_name" img_list=`curl -s $url | awk '/sinaimg/ {print $2}' | awk -F\" '/src/ {print $2}'` for img in `echo $img_list`; do img_name=`echo $img | cut -d "/" -f 5` curl -s $img -o $folder_name/$img_name done fi done } default_page="https://www.cnblogs.com/xiyin/default.html?page=" get_all_blog_url() { for i in `seq 9`; do curl -s https://www.cnblogs.com/xiyin/default.html?page=$i | awk '/DayList_TitleUrl_0/ {print $4}'| cut -d "\"" -f 2 >> blog_url_list done } get_all_blog_url get_img_url rm -rf blog_url_list #while [ $beginNum -le $endNum ]; #do # getImgUrl $beginNum `expr $beginNum + $lap` & # beginNum=`expr $beginNum + $lap + 1` # if [ $beginNum > $endNum ] # then # getImgUrl `expr $beginNum - $lap - 1` $endNum & # fi #done
上面只是第一步,把你目前的全部新浪的图床下载来,接下来你须要上传到 阿里云 OSS ,阿里云 OSS 上有挺多语言的SDK,选择本身语言的SDK进行处理,由于个人数据不是不少,因而就直接手动上传了。shell
当你上传到 阿里云 OSS 后,接下来就是 更换 URL 了,若是用 阿里云 OSS,你能够这样,每上传一张,而后你创建一张json文件,或者文本文件。用来映射源地址和现地址。
以后能够再写一个脚本,把你目前博客中的全部图片URL 更换,最后 调用博客园的API push 到博客园上。json
由于没有 API 接口权限,硬是纯手动,我都要哭了。curl
有一个很蠢的事,我原本想用 并行的,就是从我最开始的博客Id 开始遍历,到我目前最新的博客,我发现。有400多万个博客数据须要处理,好笑的是我还真的写了这个代码,每一个命令用 & 后台执行, 当我在命令行 敲出 sh command 时,只见电脑风扇疯狂涌动,只能关机让它冷静冷静,当时 cmd 是卡死了,发现博客园网站打不开。尴尬post