搬迁腾讯存储

一开始个人网站使用的是wordpress部署,后来发觉低浏览确购买一台虚拟机还是不够环保,就静态化后放到aws上,可惜国内访问不稳定,s3在国内对大点的图片访问很慢。

后来换成阿里云的oss,速度很快价格也很便宜,不过有2个很大的问题,第一个是必须备案且备案的公司必须是阿里云,第二是支持的默认页面index.html不是相对地址。例如浏览http://wwww.lixin.me 会定位到http://wwww.lixin.me/index.html ,而浏览http://wwww.lixin.me/blog/ 不会显示http://www.lixin.me/blog/index.html 内容而是同上面的首页,这就比较麻烦了,又写了个脚步吧所有网址加上index.html。

用了段时间,想换个hexo的模板,发觉模板的一些内容还是没能够配置为index.html结尾,所以只能搬迁,上了腾讯云看了看,是支持相对目录的index.html 首页的,于是切换过来,而且腾讯云的cos存储要求低一点点,只要有备案就好。同时发现腾讯的cos存储网页控制端,可以直接拖放上传多个文件夹,操作十分方便,而阿里云则需要使用工具才能上传多个文件夹及文件。
为了每次方便更新文件到腾讯云存储,使用腾讯云提供的python sdk编写一个自动上传网站的脚本。
我的博客是放在存储bucket对象下的/blog目录之下,blog中使用的资源存放在/blog/static目录下。

自动上传博客文件到腾讯云存储
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
import os
import qcloud_cos
'''
发布博客到腾讯云cos上面去
腾讯云上面对应的根目录为/blog
'''
COS_APPID=125100066
COS_SECRET_ID=u'<>'
COS_SECRET_KEY=u'<>'
COS_REGION_INFO='guangzhou'
currentPath=os.path.dirname(os.path.abspath(__file__))
cos_client=None
lastChange={}#文件路径和最后修改时间
if os.path.exists(os.path.join(currentPath,'lastchange.txt')):
with open(os.path.join(currentPath,'lastchange.txt'),'r') as f:
for line in f:
item=line.split(',')
lastChange[unicode(item[0],'utf-8')] = float(item[1])
def upload(remotePath,localPath):
global cos_client
if cos_client==None:
cos_client=qcloud_cos.CosClient(COS_APPID,COS_SECRET_ID,COS_SECRET_KEY,COS_REGION_INFO)
request=qcloud_cos.UploadFileRequest(u'wwwlixinme',unicode(remotePath) ,unicode( localPath))
request.set_insert_only(0)
upload_file_ret = cos_client.upload_file(request)
print upload_file_ret
def scanPath(pathname,remotePre=''):
for root,path,filelist in os.walk(os.path.join(currentPath,pathname)):
for filename in filelist:
fullPath =unicode( os.path.join(root, filename),'utf-8')
mtime=float(os.path.getmtime(fullPath))
if fullPath in lastChange:
if mtime-lastChange[fullPath]>1:
lastChange[fullPath]=float(mtime)
remotePath=fullPath.replace(os.path.join(currentPath,pathname),'/blog/'+remotePre)
upload(remotePath,fullPath)
else:
lastChange[fullPath]=float(mtime)
remotePath=fullPath.replace(os.path.join(currentPath,pathname),'/blog/'+remotePre)
upload(remotePath,fullPath)
if not os.path.exists(os.path.join(currentPath,'static')) or not os.path.exists(os.path.join(currentPath,'blog')):
print '当前目录不存在./blog或者./static目录'
exit(1)
scanPath('blog/public/')
scanPath('static/','static/')
with open(os.path.join(currentPath,'lastchange.txt'),'w') as f2:
for key in lastChange:
f2.write('%s,%f\n' % (key.encode('utf-8'), lastChange[key]))