备份散列文件的python脚本
昨天在机房煎熬了一天,今天一大早来公司,老大说昨天晚上线上项目出了点问题,正巧这个项目又是我在维护。听到这句话,我心里就“咯咚”一下,接着老大又说已经恢复好了,汗~@¥#%@¥!。然后老大给我布置了一个任务,让我写个脚本从数据库里查出发布状态的文档路径,并备份,要求备份的目录要保持原有的目录结构。说话就开始干!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()
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
代码写的还可以,但还是不够严谨!