zoukankan      html  css  js  c++  java
  • 博客中新浪图床 迁移至 阿里云的OSS

    前言

    因为之前有个新浪的图床,还挺好用,而且免费,自己博客的图片上传到其上面也挺方便的,但是,前几周吧,突然图片就不能访问了,之前本来是想通过添加 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 是卡死了,发现博客园网站打不开。尴尬

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第50章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第49章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第48章 读书笔记(待更新)
    Spring Boot 中使用 Quartz 实现任务调度
    实战 FastDFS Java 客户端上传文件
    分布式文件系统之 FastDFS
    Java 持久层框架之 MyBatis
    C语言实现贪吃蛇
    [转载]分享三篇非常好的学习心得
    selenium加载cookie报错问题:selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
  • 原文地址:https://www.cnblogs.com/xiyin/p/10872829.html
Copyright © 2011-2022 走看看