当前位置:编程学习 > 网站相关 >>

一个简单的python实现图片同步脚本

服务器2台,一个主一个从 nginx 散列到两台
图片上传服务就传到一台,需要同步过去
现在方案是 定期rsync,图片md5散列 ,rsync 递归那么深的目录占用系统资源较大
现在 增加一个log功能,每增加一个图片写一个log文件
/tmp/i_2011-09-01.log
add xxxxxxxx.jpg
add xxxxxxxx.jpg
...
python 定期扫描该文件是否有新记录
然后改名 使用
rsync --files-from=  就不需要递归扫描目录 测试文件修改时间了
 
#coding:utf-8
'''''
@todo 可以将图片同步 接近实时
 
快速同步,图片脚本
rsync --files-from=t.txt . ../b
后台持续运行
python rsync_img2.py --from-path=/imgpath/img --host=imgxxxxx --log-files=/tmp/tmp/img_2011-07-05.log
 
'''
import os.path
import os 
import tempfile
import datetime
import time
 
def run(path,log_file,host):
    '同步 目录  到对方服务器'
 
    
    #自动追加的 每次改名
    s=log_file
    if os.path.isfile(log_file):
        print 'pass no  log'
        time.sleep(2)
        return
    tmp=tempfile.mktemp('tmplog', os.path.basename(s), '/tmp')
    tmp2=tempfile.mktemp('tmplog', os.path.basename(s), '/tmp')
    os.rename(log_file, tmp)        
    fp=open(tmp,'r')
    fp2=open(tmp2,'w')
    for line in fp:
        t=line.strip().split(' ')
        if len(t)>1:
            fp2.write(t[1]+"\n")
    fp2.close()
    fp.close()
    os.unlink(tmp)
    os.unlink(tmp2)   
    
    cmd='sudo  -u mc -H rsync  -r -avuz  -e "ssh" --files-from='+tmp2+' '+path +' web@'+host+':'+path
    print cmd
    os.system(cmd)
 
 
if __name__=='__main__'    :
    
    while 1:
        try:
            run('/imgpath/img/','/tmp/img_'+datetime.datetime.now().strftime('%Y-%m-%d')+'.log','imgserver12331')
        except:
            pass
        time.sleep(1)
    
作者“沈冬明的技术博客”

补充:Web开发 , Python ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,