簡體   English   中英

文件已更改事件網絡共享

[英]File changed event network share

我想做的事:

我有兩個目錄。 每個包含大約90.000 xml和bak文件。

當文件發生變化時,我需要在兩個文件夾中同步xml文件(當然應該復制較新的文件)。

問題是:

由於存在大量文件以及其中一個目錄是網絡共享的事實,我不能只通過目錄循環並比較os.path.getmtime(file)值。

甚至看門狗和PyQt都不起作用(試過這里這里的解決方案)。

問題:

有沒有其他方法來獲取文件更改事件(在Windows系統上)哪些適用於那些配置而不循環所有這些文件?

代碼在......

https://stackoverflow.com/a/12345282/976427

通過網絡共享時似乎對我有用。

我冒着給出一個答案的風險(你沒有說明關於速度等的要求)但是...... Dropbox會為你免費做到這一點,並且根本不需要編寫任何代碼。

當然,如果您需要實時同步,或者您希望避免與第三方“共享”文件(盡管您可以先加密它們),它可能不適合您的需求。

所以我終於找到了解決方案:我改變了一些網絡共享設置並使用了FileSystemWatcher

為防止文件在同步時同步,我使用md5 filehash。

我使用的代碼可以在pastebin中找到(這是一個快速而骯臟的代碼,只是這里提到的問題部分)。

你能在這個頁面上使用第二個選項嗎?

http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html

從提到看門狗,我假設你在Linux下運行。 對於本地機器inotify可以提供幫助,但對於網絡共享你運氣不好。 Mercurial的inotify擴展http://hgbook.red-bean.com/read/adding-functionality-with-extensions.html具有相同的限制。

在類似的情況下(10K +文件)我在服務器和本地機器上都使用了帶有inotify的克隆mercurial存儲庫。 他們會自動提交並相互通知更改。 它有一點點延遲(在我的情況下沒有問題),但作為一個好人有一個完整的變化歷史,並在其中一個系統失效后容易重新生成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM