用了一个杀毒软件的更新工具,不过它不会自动删除过时的。然后用刚学的python折腾了一个。。。
#!/usr/bin/python import os import shutil xxx_dir = "/var/www/xxx/rel" tmp_dir = {} #run update os.system('sh /etc/xxx/start.sh') for i in os.listdir(xxx_dir): tmp = i.split('_') tmp_key = "_".join(tmp[:-1]) if tmp_dir.has_key(tmp_key): #exist key value if int(tmp_dir[tmp_key]) < int(tmp[-1]): #shutil.rmtree 可以直接删除目录 shutil.rmtree(xxx_dir + "/" + tmp_key + "_" + tmp_dir[tmp_key]) tmp_dir[tmp_key] = tmp[-1] else: shutil.rmtree(xxx_dir + "/" + tmp_key + "_" + tmp[-1]) else: tmp_dir[tmp_key] = tmp[-1] print "Update OK"
上面那个是用另一个工具更新时用的, 那个现在不好用了,又换了一个服务器. 然后再折腾一个脚本.
本来不想折腾,不过杀毒软件用相关许可去更新时会进程卡死,奇怪. 于是这样折腾了...
#!/usr/bin/python #-*- coding:utf-8 -*- import os, urllib, sys update_ser = 'http://user:[email protected]_ser.com/' update_dst = '/var/www' #用来给客户端更新的位置 update_tmp = '/tmp' def down_file(url, dst): urllib.urlretrieve(url, dst) def check_ver(curr_nup): ver = '' new_nup = [] f = open(update_tmp + "/update.ver") for i in f: ver = ver + i if i.startswith("file="): nup = i.split('=')[-1].strip() new_nup.append(nup) if nup in curr_nup: pass else: down_file(update_ser + nup, nup) f.close() for i in curr_nup: if i in new_nup: pass else: os.remove(i) with open(update_dst + "/update.ver", 'w') as f: f.write(ver) os.chdir(update_tmp) down_file(update_ser + "update.ver", "update.ver") if os.path.isfile(update_tmp + "/update.ver"): os.chdir(update_dst) check_ver(os.listdir(update_dst)) print "Download OK" sys.exit() else: print "Download Update.ver ERROR" sys.exit()