在 Ubuntu 16.04 LTS 中检测与外部云存储同步的目录中的文件变化

在 Ubuntu 16.04 LTS 中检测与外部云存储同步的目录中的文件变化

我正在制作一个软件,用于检测是否有新文件从虚拟机实例上传到 Google Cloud Platform 的存储桶中。使用以下命令使用 Cloud Storage Fuse 将名为 images 的文件目录安装到存储桶中

gcsfuse cloud-storage-bucket ~/mystuff/images

每当将文件上传到 bucket 存储中时,该文件也会出现在 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 其实还很陌生。有人能帮我解决这个问题吗?

答案1

后期替代答案:用户谷歌云存储触发器检测变化并启动云功能,但您需要 GCP 上的权限(一切都在 GCP 端完成)。

相关内容