2013-05-11 43 views
3

我試圖檢測當Dropbox忙於更新Mac OS X中用戶的Dropbox中的文件。通過對文件運行stat(1)或stat(2),我看到用戶爲文件( st_flags)通常爲0x40,但Dropbox正在更新文件時,它們會變爲0x00幾秒鐘。什麼是文件Mac OS X的st_flags(用戶定義標誌)?

圍繞我的桌面和其他文件夾,我看到~95%的文件標誌值爲0x00,但大約5%的值爲0x40。所以它可能不僅僅是一個Dropbox實現細節。我無法辨別出預測哪些文件具有0x40標誌的任何模式。有誰知道這些值是什麼意思?誰是定義它們的「用戶」?

回答

5

可以使用chflags命令行工具或chflags()系統調用(請參閱man 2 chflags)設置標誌。這些值可以在「/usr/include/sys/stat.h」中找到。

UF_TRACKED似乎有點特別。它記錄在「sys/stat.h」中

#define UF_TRACKED 0x00000040 /* file renames and deletes are tracked */ 

但不在「chflags」手冊頁中。

不幸的是,我不能告訴你什麼「跟蹤」的確切含義,但也許這有助於 已經找到更多的信息。

+0

啊,頭文件!因此,在這種情況下,「用戶」看起來就是unix文件所有者(如所有者,組,所有人)。這個UF_TRACKED是超出其他stat狀態的8個標誌位之一,或者限制文件可能/應該被修改。我想知道這些規則是否有任何強制執行機制,或者它們只是關心看待它們的計劃的諮詢。我將不得不做一些實驗。 – 2013-05-11 15:52:29

+1

@JerryKrinock:這些標誌絕對不僅僅是諮詢。例如,如果您執行「chflags uappend myfile」,則「ls> myfile」(覆蓋)將失敗,但「ls >> myfile」(append)有效,因此標記「僅附加」由文件系統強制執行。 – 2013-05-11 15:55:49

+0

@JerryKrinock:我能找到的唯一一個對'UF_TRACKED'的引用是http://stackoverflow.com/questions/10607877/uf-tracked-file-flag-from-stat-h。我*認爲*這與OS X的「自動保存和版本」功能相關,但這只是一個猜測。 – 2013-05-11 15:57:29

7

那麼即使馬丁基本上回答了這個具有非常的猜測,我進入這個作爲答案因爲它太長了評論進入。

這裏是證據...

•事實上,10.7時自動保存和版本推出,所以這就是爲什麼你沒有看到UF_TRACKED在stat.h 10.6。

•我在運行Mac OS X 10.7的Mac上試過我的實驗,它的行爲與10.8中的相同。

•有的模式:一些應用程序,它檢查後數似乎是那些已經採用了自動保存和版本創建的文檔文件,是在1 UF_TRACKED = 0×40的人。

•另一個實驗。我改名爲Mac OS X中的修訂守護可執行文件,

/System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/Support/revisiond

然後重新啓動Mac和監控的UF_TRACKED狀態Dropbox中有0x40的文檔文件。然後,我在另一臺Mac上更改了該文件,以便Dropbox將其禁用到版本的守護程序,並將其推送到此Mac。結果:文件的UF_TRACKED狀態從0x40更改爲0x00,但這次確實是而不是在2秒後變回0x40。

•它變化爲0x40 30秒後,當我恢復了修訂守護它原來的名字,並重新啓動。 (顯然修訂是通過啓動KeepAlive屬性啓動的。)

==================

因此證據是壓倒性的,馬丁的猜測是正確的。它是Apple的修訂後臺程序而不是Dropbox,它將UF_TRACKED設置爲0x40。這一點的意義在於它的文檔修訂版正在被Lion Auto Save和Versions追蹤。

+0

感謝您的調查。至少有一個人讚賞它:) – Qix 2016-04-29 07:02:32

相關問題