E D R S I H C RSS
ID
Password
Join
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)


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-10-28 12:42:54
Processing time 0.2061 sec