当前位置:首页 > 网站制作 > 正文内容

Google App Engine 文件代码备份

admin17年前 (2009-10-19)网站制作465

Google App Engine 不支持直接下载代码文件,所以我们无法直接将服务器上的代码进行备份。如果本地的代码一旦丢失,就很难找回,这点对GAE的用户来说,是相当麻烦的。

好在有人编写了一个工具,用于将GAE站点的代码打包成zip格式并下载

步骤如下:

1.在根目录下根据manatlan的代码建立zipme.py

2.在app.yaml中加入

- url: /zipme
script: zipme.py3.访问youapp.appspot.com/zipme

zipme.py脚本

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
##########################################################################
ZipMe : GAE Content Downloader
##########################################################################
Just add this lines in your app.yaml :

- url: /zipme
script: zipme.py

##########################################################################
""" # manatlan

from google.appengine.ext import webapp
from google.appengine.api import users

import wsgiref.handlers
import zipfile
import os,re,sys,stat
from cStringIO import StringIO

def createZip(path):

def walktree (top = ".", depthfirst = True):
names = os.listdir(top)
if not depthfirst:
yield top, names
for name in names:
try:
st = os.lstat(os.path.join(top, name))
except os.error:
continue
if stat.S_ISDIR(st.st_mode):
for (newtop, children) in walktree (os.path.join(top, name),
depthfirst):
yield newtop, children
if depthfirst:
yield top, names

list=[]
for (basepath, children) in walktree(path,False):
for child in children:
f=os.path.join(basepath,child)
if os.path.isfile(f):
f = f.encode(sys.getfilesystemencoding())
list.append( f )

f=StringIO()
file = zipfile.ZipFile(f, "w")
for fname in list:
nfname=os.path.join(os.path.basename(path),fname[len(path)+1:])
file.write(fname, nfname , zipfile.ZIP_DEFLATED)
file.close()

f.seek(0)
return f


class ZipMaker(webapp.RequestHandler):
def get(self):
if users.is_current_user_admin():
folder = os.path.dirname(__file__)
self.response.headers['Content-Type'] = 'application/zip'
self.response.headers['Content-Disposition'] = \
'attachment; filename="%s.zip"' % os.path.basename(folder)
fid=createZip(folder)
while True:
buf=fid.read(2048)
if buf=="": break
self.response.out.write(buf)
fid.close()
else:
self.response.headers['Content-Type'] = 'text/html'
self.response.out.write("<a href=\"%s\">You must be admin</a>." %
users.create_login_url("/zipme"))

def main():
application = webapp.WSGIApplication(
[('/zipme', ZipMaker)],
debug=False)
wsgiref.handlers.CGIHandler().run(application)

if __name__ == "__main__":
main()
这段代码会通过google的身份认证来判断访问者是否可以下载代码,所以不用担心代码泄漏。不过还是希望Google可以提供代码备份和数据库备份的功能。
 

扫描二维码推送至手机访问。

版权声明:本文由博赚恋吧资源站发布,如需转载请注明出处。

本文链接:https://www.432l.com/post/1511.html

分享给朋友:

相关文章

让网站排名上升的10个方法

网站,要带来利润,如果失去了利益,那这个网站也就失去了作用,最简单的方法,就是使自己的网站,在搜索里排名靠前,但在亿万网页中,一个网站在搜索引擎里的排名排到第三页以后去了的话,基本就没什么效果可言了,那如何才能靠前呢,本人虽然做网站时间不长,也谈点自己的心得,供大家参考。   1.首先要定位好自己的网站,清楚自己的网站提供什么,提供给什么样的人群的。这里讲的是关键词的选择,是排名之第一要素。选错关...

Zblog加入Google广告经典方法介绍

1.首页侧边栏添加方法打开 \TEMPLATE\default.html,找到下述代码:<div class="function" id="divCatalog"> <h3><#ZC_MSG026#></h3> <ul> <#CACHE_INCLUDE_CATALOG#> </ul...

Spottt—一个很好的免费链接互换提高流量服务

如果你也是经营网站部落格的站长,一定听过“流量就是金钱” ,如何让网站拥有更多的访客就显得相当重要。除了提供最优质的服务功能,不断更新网站内容外,透过交换连结的方式也可以让网站能见度提升不少。 Spottt目前的交换赚取/付出比例为3点04分。 当一位访客进入你的网站,你可以获取3个点数; 而让你的连结显示在其他网站,则必须付出4个点数。 Spottt提供免费的连结交换服务,只要在注册后将原始码放...

恋吧推荐几个有意思的陌生人聊天网站

随着Omegle.com的火爆,国内又有了好几个模仿的网站了,打开网站,就可以随便碰上一个陌生人聊天了。luguode.com 路过的liaoyihui.com/ 聊一会moluren.com.cn/ 陌路人,这个很有效率,相当的不错呢!QQ截图一张,呵呵!生活压力这么大,如果不便找亲朋好友分担,不妨去上面几个网站随便找一个陌生人拉来发泄一下,也很不错哦,真正的陌生人哦,关闭浏览器,丝毫不知道对...

eWeek:谷歌关闭的10项网络服务

美国IT网站eWeek今天撰文列举了谷歌关闭的10项网络服务及其原因,有些是出于成本考虑,有些则是因为与现有产品重叠,还有的则是因为不熟悉业务所致。  以下为文章全文:  当全球经济2008开始下滑时,谷歌CEO埃里克·施密特(Eric Schmidt)曾公开表示,将削减成本。几周之后,谷歌先后关闭了Lively、Google Video、Notebook等服务以及广播和印刷广告业务...

换域名对网站带来的影响及补救措施完美总结

首先要面临着以下的问题:1、新域名是新申请的,那么以前的ALEXA排名和流量就都没有了2、大家都不知道新域名,人气来源得从零开始培养(理想状态)3、搜索因擎要重新开始收录你的新域名,重新开始爬你的站。 慢长的等待时间!4、站内的许多网址是绝对地址的要全部改成你的新地址,工作量很大。.包括图片,附件等地址5、站外宣传的原来地址失效了,得更换成新的地址6、和别的站做的友情连接的地址是原来的,得更换成新...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。