有个同步图片目录的需求,本来是想inotify rsync实现的,但是不想搭建,就写个脚本
#!/usr/bin/python
# coding:utf-8
import os
from pyinotify import WatchManager, Notifier,ProcessEvent,IN_DELETE, IN_CREATE,IN_MODIFY
def DelVideoImagesTo134(filename):
os.system(\"sshpass -p 123456 ssh www@10.144.0.134 \'mv %s /tmp/\'\" % filename)
def ScpVideoImagesTo134(filename):
os.system(\"sshpass -p 123456 scp -r %s www@10.144.0.134:%s\" % (filename,filename))
class EventHandler(ProcessEvent):
\"\"\"事件处理\"\"\"
def process_IN_CREATE(self, event):
print(\"Create file: %s \" % os.path.join(event.path,event.name))
ScpVideoImagesTo134(os.path.join(event.path,event.name))
def process_IN_DELETE(self, event):
print(\"Delete file: %s \" % os.path.join(event.path,event.name))
DelVideoImagesTo134(os.path.join(event.path,event.name))
def process_IN_MODIFY(self, event):
print(\"Modify file: %s \" % os.path.join(event.path,event.name))
ScpVideoImagesTo134(os.path.join(event.path,event.name))
def FSMonitor(path=\'.\'):
wm = WatchManager()
mask = IN_DELETE | IN_CREATE |IN_MODIFY
notifier = Notifier(wm, EventHandler())
wm.add_watch(path, mask,auto_add=True,rec=True)
print(\'now starting monitor %s\'%(path))
while True:
try:
notifier.process_events()
if notifier.check_events():
notifier.read_events()
except KeyboardInterrupt:
notifier.stop()
break
if __name__ == \"__main__\":
FSMonitor(\'/home/www/nginx/html/images/\')
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。



