一个简单的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 ,