用python监视文件变化,定时更新修改过的文件。-- 逆水寒

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import os
import sys
import time
import urllib
import pyinotify
import logging
import subprocess
from pyinotify import WatchManager, Notifier, ThreadedNotifier, EventsCodes, ProcessEvent


sync_dirs = {'/mnt/video/pvmsvideo/2013'                :  'pvms_video_pvmsvideo',\
             '/mnt/video/pvmsimage/2013'                :  'pvms_video_pvmsimage'}

def Monitor():
        class Ptmp(ProcessEvent):
                """docstring for Ptmp"""
                def process_IN_CREATE(self,event):
			pass

		def process_IN_CLOSE_WRITE(self,event):
                        print "Modify : %s " % os.path.join(event.path,event.name)
                        #notify_change(event)

                def process_IN_DELETE(self,event):
			fp = open("/var/log/lostvideo.log","w+")
                        fp.write("Remove : %s " % os.path.join(event.path,event.name))
			fp.close()
        wm = WatchManager()

        mask = pyinotify.IN_CREATE|pyinotify.IN_DELETE|pyinotify.IN_CLOSE_WRITE

        notifier = Notifier(wm,Ptmp())

        pathes = sync_dirs.keys()
        for path in pathes:
                wdd = wm.add_watch(path,mask,rec=True,auto_add=True)

        while True:
                try:
                        notifier.process_events()
                        if notifier.check_events():
                                notifier.read_events()
                except KeyboardInterrupt:
                        notifier.stop()
                        break

def notify_change(event):
        for key in sync_dirs.keys():
                if event.path.find(key) >= 0 :
			ps_cmd = "ps -ef|grep -i \"rsync.*%s.*\"|wc -l" % (key)
			print "%s %d" % (ps_cmd,int(os.popen(ps_cmd).read()))
			if int(os.popen(ps_cmd).read()) == 2:
                        	cmd = "rsync -avrP --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r --password-file=/etc/backup.pass %s --exclude-from=/etc/rsyncexclude.list backup@10.211.1.115::%s & " % (key,sync_dirs[key])
                        	print cmd
                        	#os.system(cmd)
				subprocess.Popen(cmd,shell=True)

if __name__ == "__main__":
        Monitor()
能不能抽时间帮忙看看 怎么加个定时器到上边代码,
需求是定时每20分钟同步一次修改过的文件到另一台服务器。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值