上个blog讲了搭建hexo blog的方法,并且可以把博客放在github上,很简单而且很有效,github是个好地方。
但是github上保存的只是hexo生成好的html文件和一些博客用到的图片之类的,而我想github能保存我博客的源文件,就是.md文件。
刚开始我想已附件的方式把源文件链接到网站里面,这样github就会把他们当成资源文件保存了,可是hexo好像不支持附件链接。
hexo或者说markdown支持图片的链接,于是我想到了把我的博客源文件制作成图片然后链接进博客html里,这样就能达到保存的效果了。
直接讲我怎么做的吧:
- 首先下载二维码生成工具
yum install qrencode
- 对源文件生成二维码图片
qrencode -o my.md.png “my.md”
- 在二维码图片的后面追加分隔符
- 在二维码图片后面追加博客源文件的所以内容
- 把二维码图片链接进博客
- 生成并发布博客
这样我的博客源码就被写在了图片了,图片又被保存在了github上,再也不用担心博客的丢失了。
如果想还原博客的话就读取图片内存然后取出分隔符之后的全部内容就ok了。
整个流程还是有点小复杂的,所以我写了一个python脚本来完成,他可以完成整个发布博客和还原博客的过程。
备份过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| def genfile(fn): print "genfile %s" % (fn) outf = outdir+os.path.basename(fn)+".png" os.system("qrencode -o %s \"%s\"" % (outf,fn)) fp = open(outf,"ab+") fp.writelines(splitstr) fp1 = open(fn,"rb") fp.writelines(fp1.read(os.path.getsize(fn))) fp1.close() fp.close()
fi=open(linkdir+"index.md","a") fi.write("\n" % (os.path.basename(fn),pnglink+os.path.basename(fn)+".png")) fi.close() return
|
还原过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def refile(fn): fp = open(fn,"rb") content=fp.read(os.path.getsize(fn)) fp.close() pos=content.find(splitstr) if pos >= 0: print "revert file %s" % (fn) ct=content[pos+len(splitstr):] fname=os.path.basename(fn) fname=fname[0:-4] fi=open(rdst+fname,"w") fi.writelines(ct) fi.close() return
|
python代码在此