在 Ubuntu 16.04 LTS 中检测与外部云存储同步的目录中的文件更改
Detecting file changes in directory synced with external cloud storage in Ubuntu 16.04 LTS
我正在制作一个软件来检测是否有新文件从虚拟机实例上传到 Google 云平台的存储桶中。通过此命令使用 Cloud Storage Fuse 将名为 images 的文件目录装载到存储桶中
gcsfuse cloud-storage-bucket ~/mystuff/images
每当有文件上传到存储桶中时,该文件也会出现在图像目录中。我正在使用 Python Watchdog 包来检测是否创建了新文件
# -*- coding: utf-8 -*-
#!/bin/bash
import time
import TextDetector
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
DIR="~/mystuff/images"
class ExampleHandler(FileSystemEventHandler):
def on_created(self, event): # when file is created
# do something, eg. call your function to process the image
print("Got event for file %s" % event.src_path)
TextDetector.detect_text(event.src_path)
observer = Observer()
event_handler = ExampleHandler() # create event handler
# set observer to use created handler in directory
observer.schedule(event_handler, path=DIR)
observer.start()
# sleep until keyboard interrupt, then stop + rejoin the observer
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
问题是看门狗没有检测到任何东西,即使每次我在存储桶存储中上传一些东西时在图像目录中创建了一个新文件。我也试过使用 inotify 但结果也是一样的。当我在 Windows 平台本地尝试时,代码运行没有任何问题。我实际上对 Ubuntu 很陌生。谁能帮我解决这个问题?
您可能需要查看以下选项:
- Cloud Pub/Sub Notifications for Google Cloud Storage with example in Python
- Cloud Functions Storage Tutorial
- Cloud Storage Object Change Notification
我建议不要在 FUSE 连接器之上构建并利用平台提供的本机功能。
我正在制作一个软件来检测是否有新文件从虚拟机实例上传到 Google 云平台的存储桶中。通过此命令使用 Cloud Storage Fuse 将名为 images 的文件目录装载到存储桶中
gcsfuse cloud-storage-bucket ~/mystuff/images
每当有文件上传到存储桶中时,该文件也会出现在图像目录中。我正在使用 Python Watchdog 包来检测是否创建了新文件
# -*- coding: utf-8 -*-
#!/bin/bash
import time
import TextDetector
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
DIR="~/mystuff/images"
class ExampleHandler(FileSystemEventHandler):
def on_created(self, event): # when file is created
# do something, eg. call your function to process the image
print("Got event for file %s" % event.src_path)
TextDetector.detect_text(event.src_path)
observer = Observer()
event_handler = ExampleHandler() # create event handler
# set observer to use created handler in directory
observer.schedule(event_handler, path=DIR)
observer.start()
# sleep until keyboard interrupt, then stop + rejoin the observer
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
问题是看门狗没有检测到任何东西,即使每次我在存储桶存储中上传一些东西时在图像目录中创建了一个新文件。我也试过使用 inotify 但结果也是一样的。当我在 Windows 平台本地尝试时,代码运行没有任何问题。我实际上对 Ubuntu 很陌生。谁能帮我解决这个问题?
您可能需要查看以下选项:
- Cloud Pub/Sub Notifications for Google Cloud Storage with example in Python
- Cloud Functions Storage Tutorial
- Cloud Storage Object Change Notification
我建议不要在 FUSE 连接器之上构建并利用平台提供的本机功能。