备份散列文件的python脚本

昨天在机房煎熬了一天,今天一大早来公司,老大说昨天晚上线上项目出了点问题,正巧这个项目又是我在维护。听到这句话,我心里就“咯咚”一下,接着老大又说已经恢复好了,汗~@¥#%@¥!。然后老大给我布置了一个任务,让我写个脚本从数据库里查出发布状态的文档路径,并备份,要求备份的目录要保持原有的目录结构。说话就开始干!python学的不怎么样,搞了半天才弄出来,现在贴在这里,请朋友们拍砖吧!脚本带有备份打包功能,代码如下:

#!/usr/local/python/bin/python
#encoding=utf-8
#description:backup the publish book resource
#author Aaron wang
import datetime,os
from sys import argv
import MySQLdb
def download():
        mydb=MySQLdb.connect(host=”192.168.1.1″,user=”root”,passwd=”root”,db=”online”,charset=”utf8″)
        cursor=mydb.cursor()
        cursor.execute(“select a.part_file,a.original_part_file from book_parts a,books b where a.id=b.id and b.status=’published’ “)
        n=cursor.fetchall() 

        for i in n:
                a=[]
                a.append(argv[1]+”/”+i[0])
                a.append(argv[1]+”/”+i[1])
                for row in a:
                        fname=os.popen(‘basename’+” “+row).readlines()
                        dname=os.popen(‘dirname’+” “+row).readlines()
                        os.popen(‘mkdir -p’+” “+argv[2]+”/”+dname[0])
                        os.popen(‘cp’+” “+row+” “+argv[2]+”/”+row)
                a=[]
                row=[]
                cursor.close()
def tar():
        today=datetime.date.today().strftime(‘%Y%m%d’)
        os.popen(‘cd’+” “+argv[2]+’ &&’+” “+’tar czf books’+today+’.tgz .’)
def usage():
        print “error:the parameter is empty!\nuasge:python ttools.py source destination\nexample:python ttools.py /ty/media /tmp”
if __name__==’__main__’:
        if len(argv) !=3:
                usage()
        else:
                download()
                tar()


标签: , ,
本文连接:http://aaronw.me/static/834.html
原创日志为王炜版权所有,转载时必须以链接形式注明作者和原始出处及本声明。

这篇文章目前有3条评论

  1. dongsheng: 2011-04-01 17:34

    fname=os.popen(‘basename’+” “+row).readlines()
    dname=os.popen(‘dirname’+” “+row).readlines()
    os.popen(‘mkdir -p’+” “+argv[2]+”/”+dname[0])
    os.popen(‘cp’+” “+row+” “+argv[2]+”/”+row)

    you can probably replace popen calls with python equivalent

    look into package os and os.path

    it’s more readable, also faster using python function calls than forking processes

  2. 老牛: 2011-03-29 22:42

    代码写的还可以,但还是不够严谨!

(必填项)

(必填项)

(可选)