We are coevolutionary race with everything else -- Margie Profet
이 스크립트를 backup.cgi란 이름으로 작성한 후 moin.cgi와 같은 디렉토리에 넣으시기 바랍니다.
#!/usr/bin/env python
#
# Simple script to back up the wiki
#
# Copyright 2001 Adam Feuer <adamf at pobox dot com>
#
# License: Python
#
import sys
import os
import stat
import string
import time
import socket
sys.path.append('.')
import moin_config
true = 1
false = 0
BUFSIZE = 100000 # how much of a file to read at once
wikiPath = moin_config.data_dir
wikiName = moin_config.wiki_name
wikiTextFolder = os.path.join(wikiPath,'text')
def MakeTimeString():
return time.strftime("%Y-%m-%d-%H%M",time.localtime())
def MakeTempFileName(baseName):
return "/tmp/%s_backup-%s.tar.gz" % (baseName,MakeTimeString())
def GzipDirectory(tempFileName,path):
pid = os.fork()
if pid == 0:
# we are the child process
parent, dir = os.path.split(path)
os.chdir(parent)
os.execl("/bin/tar","tar", "-zcf", tempFileName, dir)
exit(0)
else:
os.waitpid(pid,0) # for child process to end
size = os.stat(tempFileName)[stat.ST_SIZE]
return size
def BackupWiki(wikiName,wikiTextFolder):
tempFileName = MakeTempFileName(wikiName)
return tempFileName, GzipDirectory(tempFileName,wikiTextFolder)
def DumpFile(path):
f = open(path)
buffer = f.read(BUFSIZE)
while len(buffer) > 0:
sys.stdout.write(buffer)
buffer = f.read(BUFSIZE)
f.close()
def GetHostname():
return socket.getfqdn()
if __name__ == "__main__":
print "Content-type: application/x-gzip"
filename,size=BackupWiki(wikiName,wikiTextFolder)
print "Content-length: %s" % size
print "Content-Disposition: attachment; filename=%s" % filename
print "Expires: 0"
print
DumpFile(filename)
os.remove(filename)








![[http]](/wiki/imgs/http.png)
