前言

因为之前有个新浪的图床,还挺好用,而且免费,自己博客的图片上传到其上面也挺方便的,但是,前几周吧,突然图片就不能访问了,之前本来是想通过添加 meta 头来解决的,但是发现没有效果。于是就自己搞了个 阿里云的OSS, 主要用作为 图床。前段时间因为数据分析写报告时,特地学了Shell,刚好Shell 就适合来处理这种数据量不是很大的数据,于是就花了点时间来迁移图床了。

前提准备

  • 阿里云OSS 开通
  • Shell 基础知识 curl awk cut
  • 最好有博客园API Post Blog 这个接口,如果你数据多的话最好有, 要不然需要一个一个上传。

用 Shell 脚本爬取当前博客所有的 新浪图床的图片,并下载到本地

#!/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进行处理,因为我的数据不是很多,于是就直接手动上传了。

当你上传到 阿里云 OSS 后,接下来就是 更换 URL 了,如果用 阿里云 OSS,你可以这样,每上传一张,然后你建立一张json文件,或者文本文件。用来映射源地址和现地址。

之后可以再写一个脚本,把你目前博客中的所有图片URL 更换,最后 调用博客园的API push 到博客园上。

因为没有 API 接口权限,硬是纯手动,我都要哭了。

有一个很蠢的事,我本来想用 并行的,就是从我最开始的博客Id 开始遍历,到我目前最新的博客,我发现。有400多万个博客数据需要处理,可笑的是我还真的写了这个代码,每个命令用 & 后台执行, 当我在命令行 敲出 sh command 时,只见电脑风扇疯狂涌动,只能关机让它冷静冷静,当时 cmd 是卡死了,发现博客园网站打不开。尴尬

博客中新浪图床 迁移至 阿里云的OSS的更多相关文章

  1. MWeb 1.3.7 发布!增加发布到 Wordpress 等支持 MetaWeblog API 的服务,如:Wordpress 博客、新浪博客、cnblogs、oschina。

    MWeb 1.3.7 版的新功能 增加发布到 Wordpress 等支持 Metaweblog API 的服务,目前经测试过的有: Wordpress 博客.新浪博客.cnblogs.oschina. ...

  2. Hexo 博客图片添加至图床---腾讯云COS图床使用。

    个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 腾讯云官网 登录注册 创建存储桶 进入上面的存 ...

  3. 搭建属于自己的图床(基于阿里云OSS,成本9元+20分钟)

    之前的笔记都存在有道云笔记上,慢慢转化为Markdown格式分享出来,这中间遇到了一个图片问题,找了好久,了解到图床,然后找了谷歌插件中微博图床插件,用了一段时间发现,每次都需要登录微博,然后我又是一 ...

  4. 在hexo静态博客中利用d3-cloud来展现标签云

    效果: http://lucyhao.com/tags/ hexo自带的tag cloud的标签展现不太美观,想能够展现出“云”效果的标签.在网上找到了d3-cloud这个项目,github地址:ht ...

  5. 将个人博客从GitHub迁移至阿里云服务器过程总结

    让我们先回顾下前两篇博客: 程序员如何从0到1搭建自己的技术博客 在个人博客中优雅的使用Gitalk评论插件 通过前两篇博客,我们了解了如何快速的从0到1搭建一个个人博客并使用了Gitalk评论插件, ...

  6. 在个人博客中优雅的使用Gitalk评论插件

    在上一篇博客<程序员如何从0到1搭建自己的技术博客>中,我们了解了如何快速的从0到1搭建一个个人博客. 其实细心的你会发现,该博客用到了一个评论插件,这个插件就是Gitalk. 如果想要在 ...

  7. 博客中gitalk最新评论的获取 github api使用

    博客中,对于网友的评论以及每篇文章的评论数还是很重要的.但是基于静态的页面想要存储动态的评论数据是比较难的,一般博客主题中都内置了评论插件,但是博客主题中对于最新评论的支持显示还是很少的,至少目前我是 ...

  8. 关于将sublime中的代码高亮导出到博客中

    第一步:打开sublime编辑器,用快捷键ctrl+shift+p调出control panel,在出现的输入框中输入install,按回车键 第二步:然后输入插件名称sublimehighlight ...

  9. 在博客中显示图片_Mac版

    主要是防止自己忘掉 为了解决一开始自己想在写入的博客中添加本地图片,直接链接的话在自己的电脑倒是可以显示图片,但是在别人的电脑上就没办法加载图片了,问各路大神也没人愿意解答,百度也没有想要的答案,只好 ...

随机推荐

  1. Java日期时间API系列4-----Jdk7及以前的日期时间类的线程安全问题

    1.Date类为可变的,在多线程并发环境中会有线程安全问题. (1)可以使用锁来处理并发问题. (2)使用JDK8  Instant 或 LocalDateTime替代. 2.Calendar的子类为 ...

  2. Android SearchView不显示搜索icon

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/80 背景: 之前碰到了一个页面展示问题,SearchVie ...

  3. Android 7.0新特性

    还望支持个人博客站:http://www.enjoytoday.cn 由于google目前不是无法直接在国内访问,故此,对于android 开发平台的7.0新特性做个保存.也可供大家查阅.原文转自an ...

  4. 计算机基础 python入门

    1.计算机基础 计算机组成: 输入输出设备内. 存储器 .cpu .电源 .显卡 中央处理器(cpu) 处理各种数据 相当于人的大脑 内存 存储数据 相当于临时记忆 硬盘 存储数据 相当于人的永久记忆 ...

  5. BayaiM__SQLLDR 用法:

    BayaiM__SQLLDR 用法: ===================================================================== C:\Users\Ad ...

  6. Mysql添加用户与授权

    1.本地环境 CentOS Linux release 7.5.1804 (Core) mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using ...

  7. PHP转Go系列:数组与切片

    数组的定义 用过PHP的同学应该很清楚,无论多么复杂的数据格式都可以用数组来表达,什么类型的数据都可以往里塞,它是工作必备的一部分,使用很简单,易用程度简直变态. $array = [1, 'name ...

  8. yum update 执行报错: error : unpacking of archive failed on file /usr/.../...;5d26ff7c: cpio : symlink

    早前已发现有台机一直在报这么个错误, 一用yum update 就报一堆: Error: unpacking rpm package ..... error: xxxx : install faile ...

  9. 执行 npm cache clean报错

    C:\Users\you name>npm cache cleannpm ERR! As of npm@5, the npm cache self-heals from corruption i ...

  10. react中antd的表格自定义展开

    antd的表格官方案例中给出的都是固定的图表展开,在做需求的时候,需要使用点击最后一列,然后出现展开内容,实现效果图如下 在最开始设置一个全局变量 const keys = [];在设置列参数的函数中 ...