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

Google App Engine 文件代码备份

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

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

分享给朋友:

相关文章

让blogger变得更漂亮!用Disqus实现Blogger页内评论

用Disqus实现Blogger页内评论 新版的Blogger支持了页内评论,支持OPenID和Google Account,详细方法可以查看Disqus页内留言方法只需要简单的三步:一注册之后,首先添加你的网站名称和链接;第二步,选择blogger平台;第三部上传你的Blogger模板(这里需要注意一点,有一个选项:Use Disqus on future blog entries o...

恋吧发现并推荐一个华丽的Blog Widgets服务—Wowzio

首先输入你的 Blog Feed 地址,Wowzio 就会自动从 Blog 文章中提取出文字、图片,生成 6 种效果华丽的 Widgets 供你选择。并且 Widgets 的颜色和尺寸都是可以自定义的,这可以让 Widgets 和 Blog 的风格趋于一致。这 6 种Widgets 分别是(点击链接可查看具体效果)——Panoramic Slideshow、SlideShow、Photo Gall...

有了YouSerials,不在为找序列号而焦头烂额!

您还在为找一个卡巴斯基杀毒软件Key而不停地在百度谷歌搜索吗?前段时间您是否为自己使用的Windows系统是盗版的而担心被微软黑屏?从网上下载了Nero刻录软件却苦于没有序列号? 今天站长给您介绍一个序列号搜索引擎『YouSerials』 是一个汇集了众多软件序列号的网站,用户在这里只要输入软件名称以及软件版本,就能找到对应的正版序列号用于注册软件。这给使用商业软件的用户提供了...

让博客变美,还能赚点零花钱的工具你见过没?

今天,站长在自己的blogbus上转悠,发现一个很有趣的blog工具-blogdeco,装扮博客很漂亮,还能通过 赚点零花钱,详情如下:          由国内知名的ISP业者So-net与日本最新流行的博客小玩意(blogtool)门户网站「BlogDeco」所合作推出的 『BlogDeco中文...

Wordpress 插件推荐:死链检测工具Broken Link Checker

    死链,又称为坏链,是由于输入错误或者链接失效而造成的内部或者外部链接错误,对于博客或者网站来说,如果死链过多,会严重影响博客的质量,被搜索引擎判为低效的网站。这样不但获取不到好的搜索排名,而且还会降低权重。如果你是使用 Wordpress 建站,那么可以使用这个不错的插件——Broken Link Checker。B...

TweetBoard.com:把Twitter放到自己的网站上

网站介绍:TweetBoard是一个基于Twitter的网站聊天室,可以将Twitter和自己的网站完美结合在一起,效果非常cool~TweetBoard可以实时处理你的Twitter信息流(最大延迟时间为1分钟),因此你可以把它跟Twitter账号一起用,并应用到任何网站(通过在网站中插入TweetBoard提供的代码)。你在TweetBoard上发布的消息会同时显示在Twitter上,并且可以...

发表评论

访客

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