專利名稱:文件系統(tǒng)的用戶操作發(fā)現(xiàn)方法和應(yīng)用該方法的同步系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種文件系統(tǒng)的用戶操作發(fā)現(xiàn)方法和應(yīng)用該方法的同步系統(tǒng),屬于計算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的用戶數(shù)據(jù)被放到了互聯(lián)網(wǎng)上。網(wǎng)絡(luò)存儲正蓬勃發(fā)展,與傳統(tǒng)的本地硬盤存儲形成很好的互補(bǔ)關(guān)系。在這種狀態(tài)下,用戶本地的資料如何同步到多個設(shè)備,成了不少用戶關(guān)注的話題。同步型網(wǎng)絡(luò)存儲如qbox. me是一個典型的同步軟件,它可以讓用戶在PC電腦(包括Windows/MacOS/Linux等平臺)與ffeb、手機(jī)進(jìn)行資料的自動同步,無需用戶進(jìn)行任何干預(yù)。哪怕在用戶關(guān)閉同步軟件的情況下,如果用戶對要同步的目錄進(jìn)行了一系列的操作,同步軟件啟動后,也需要將資料準(zhǔn)確地進(jìn)行同步。通常,同步軟件都是通過比對本地文件系統(tǒng)與記錄的上一次同步狀態(tài)之間的差異,來進(jìn)行同步操作。但是通常同步軟件都不能非常智能地發(fā)現(xiàn)用戶行為。例如,用戶將文件(或文件夾)改名,通常同步軟件會將其識別為用戶先刪除了文件(或文件夾),然后再增加相同內(nèi)容但不同名稱的新文件(或文件夾)。同理,用戶將文件(或文件夾)從一個目錄移動到另一個目錄,也會被識別為用戶先刪除了文件(或文件夾),然后再在另一個目錄增加相同名稱相同內(nèi)容的新文件(或文件夾)。這樣做的后果是糟糕的用戶體驗(yàn),以及網(wǎng)絡(luò)流量的浪費(fèi),特別是當(dāng)文件夾里面有大量文件時,這些文件先從服務(wù)器刪除,然后又一一重新上傳,非常浪費(fèi)網(wǎng)絡(luò)流量。一種常規(guī)的優(yōu)化方式是通過優(yōu)化文件上傳過程,比如通過生成文件的特征碼,上傳文件前先通過特征碼問服務(wù)器該文件是否存在,如果存在則不傳內(nèi)容,只是重新建立相同內(nèi)容的新文件。這樣做只比最差的情況下好一點(diǎn),但相比用戶一個簡單的改名(或移動) 操作,一一判斷服務(wù)器是否存在相同內(nèi)容的文件,并一一建立新文件,仍然是不小的負(fù)擔(dān), 效果依然不是很理想。如何能夠在不開啟同步軟件的情況下仍然能夠智能地發(fā)現(xiàn)用戶操作是網(wǎng)絡(luò)同步技術(shù)領(lǐng)域亟待解決的技術(shù)問題之一。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種全新的用戶操作發(fā)現(xiàn)方法和應(yīng)用此方法的同步系統(tǒng),可以智能地發(fā)現(xiàn)用戶的新增、刪除、改名或移動等操作,從而提升了用戶體驗(yàn),減少了網(wǎng)絡(luò)流量的消耗。本發(fā)明的一個方面,提供了一種文件系統(tǒng)的用戶操作發(fā)現(xiàn)方法,包括利用文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識作為結(jié)點(diǎn)唯一標(biāo)識,對本地同步目錄的結(jié)點(diǎn)和上一次同步成功時的文件系統(tǒng)結(jié)點(diǎn)進(jìn)行比對,以識別用戶操作行為。具體地,所述的結(jié)點(diǎn)唯一標(biāo)識在Linux/Mac系統(tǒng)下是ino號,在Windows的NTFS文件系統(tǒng)下是File ID。根據(jù)本發(fā)明的一個具體但非限制性的實(shí)施方案,所述方法包括以下步驟-將本地同步目錄中的所有結(jié)點(diǎn)按結(jié)點(diǎn)唯一標(biāo)識排序;-將上一次同步成功時的所有節(jié)點(diǎn)按結(jié)點(diǎn)唯一標(biāo)識排序;-對本地同步目錄的結(jié)點(diǎn)唯一標(biāo)識和上一次同步成功時的結(jié)點(diǎn)唯一標(biāo)識進(jìn)行比對,并執(zhí)行以下操作如果某個結(jié)點(diǎn)唯一標(biāo)識在本地同步目錄中和在上一次同步成功時的文件系統(tǒng)中都存在,那么比對該結(jié)點(diǎn)在本地同步目錄中的路徑與它在上一次同步成功時的文件系統(tǒng)中的路徑如果路徑不同,則確定該文件或目錄被用戶移動或改名;并且如果該結(jié)點(diǎn)是文件,對本地同步目錄和上一次同步成功時該文件的內(nèi)容進(jìn)行比對如果內(nèi)容不一致,則表示該文件內(nèi)容被修改;如果本地同步目錄中存在的結(jié)點(diǎn)唯一標(biāo)識,在上一次同步成功時的文件系統(tǒng)中并不存在,則確定該結(jié)點(diǎn)為用戶新增的文件或目錄;如果本地同步目錄中不存在某個結(jié)點(diǎn)唯一標(biāo)識,但在上一次同步成功時的文件系統(tǒng)中該結(jié)點(diǎn)唯一標(biāo)識存在,則確定該文件或目錄被用戶刪除。根據(jù)本發(fā)明的一個具體但非限制性的實(shí)施方案,所述方法包括以下步驟-對本地同步目錄的結(jié)點(diǎn)唯一標(biāo)識和上一次同步成功時的結(jié)點(diǎn)唯一標(biāo)識進(jìn)行比對,找出相同的結(jié)點(diǎn)唯一標(biāo)識,并結(jié)合該結(jié)點(diǎn)路徑或文件內(nèi)容的變化,以發(fā)現(xiàn)文件或目錄移動或改名的操作以及文件內(nèi)容被修改的操作;-將已經(jīng)通過結(jié)點(diǎn)唯一標(biāo)識匹配的結(jié)點(diǎn)從本地同步目錄和上一次同步成功時的文件系統(tǒng)中去除;-將剩余結(jié)點(diǎn)通過目錄樹比對的方式,以發(fā)現(xiàn)文件修改、新增文件或目錄以及刪除文件或目錄的用戶操作。根據(jù)本發(fā)明的一個實(shí)施方案,文件內(nèi)容是否修改通過對比文件大小和文件最后編輯時間是否一致來判斷;或者通過對比文件內(nèi)容的摘要如MD5、SHAl來判斷。另一方面,本發(fā)明提供了一種同步系統(tǒng),該系統(tǒng)包括一用戶操作發(fā)現(xiàn)模塊,所述的用戶操作發(fā)現(xiàn)模塊利用文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識作為結(jié)點(diǎn)唯一標(biāo)識,對本地同步目錄的結(jié)點(diǎn)和上一次同步成功時的文件系統(tǒng)結(jié)點(diǎn)進(jìn)行比對,以識別用戶操作行為。具體地,所述的結(jié)點(diǎn)唯一標(biāo)識在Linux/Mac系統(tǒng)下是ino號,在Windows的NTFS 文件系統(tǒng)下是File ID。根據(jù)本發(fā)明的一個具體但非限制性的實(shí)施方案,所述的用戶操作發(fā)現(xiàn)模塊包括將本地同步目錄中的所有結(jié)點(diǎn)按結(jié)點(diǎn)唯一標(biāo)識排序的單元模塊;將上一次同步成功時的所有節(jié)點(diǎn)按結(jié)點(diǎn)唯一標(biāo)識排序的單元模塊;對本地同步目錄的結(jié)點(diǎn)唯一標(biāo)識和上一次同步成功時的結(jié)點(diǎn)唯一標(biāo)識進(jìn)行比對的單元模塊,該單元模塊執(zhí)行以下操作如果某個結(jié)點(diǎn)唯一標(biāo)識在本地同步目錄中和在上一次同步成功時的文件系統(tǒng)中都存在,那么比對該結(jié)點(diǎn)在本地同步目錄中的路徑與它在上一次同步成功時的文件系統(tǒng)中的路徑如果路徑不同,則確定該文件或目錄被用戶移動或改名;并且如果該結(jié)點(diǎn)是文件,對本地同步目錄和上一次同步成功時該文件的內(nèi)容進(jìn)行比對如果內(nèi)容不一致,則表示該文件內(nèi)容被修改;如果本地同步目錄中存在的結(jié)點(diǎn)唯一標(biāo)識,在上一次同步成功時的文件系統(tǒng)中并不存在,則確定該結(jié)點(diǎn)為用戶新增的文件或目錄;如果本地同步目錄中不存在某個結(jié)點(diǎn)唯一標(biāo)識,但在上一次同步成功時的文件系統(tǒng)中該結(jié)點(diǎn)唯一標(biāo)識存在,則確定該文件或目錄被用戶刪除。根據(jù)本發(fā)明的一個具體但非限制性的實(shí)施方案,所述的用戶操作發(fā)現(xiàn)模塊包括對本地同步目錄的結(jié)點(diǎn)唯一標(biāo)識和上一次同步成功時的結(jié)點(diǎn)唯一標(biāo)識進(jìn)行比對的單元模塊,用于找出相同的結(jié)點(diǎn)唯一標(biāo)識,并結(jié)合該結(jié)點(diǎn)路徑或文件內(nèi)容的變化,以發(fā)現(xiàn)文件或目錄移動或改名的操作以及文件內(nèi)容被修改的操作;將已經(jīng)通過結(jié)點(diǎn)唯一標(biāo)識匹配的結(jié)點(diǎn)從本地同步目錄和上一次同步成功時的文件系統(tǒng)中去除的單元模塊;將剩余結(jié)點(diǎn)通過目錄樹比對的單元模塊,用于發(fā)現(xiàn)文件修改、新增文件或目錄以及刪除文件或目錄的用戶操作。根據(jù)本發(fā)明的一個實(shí)施方案,文件內(nèi)容是否修改通過對比文件大小和文件最后編輯時間是否一致來判斷;或者通過對比文件內(nèi)容的摘要如MD5、SHAl來判斷。本發(fā)明的有益效果主要體現(xiàn)在本發(fā)明利用文件系統(tǒng)自有的結(jié)點(diǎn)標(biāo)識如ino號作為結(jié)點(diǎn)唯一標(biāo)識,通過對比該結(jié)點(diǎn)唯一標(biāo)識如ino號及其對應(yīng)結(jié)點(diǎn)的路徑和文件內(nèi)容的變化,對用戶的改名、移動、文件內(nèi)容修改等操作進(jìn)行識別。本發(fā)明利用自有結(jié)點(diǎn)標(biāo)識比對與常規(guī)目錄樹比對相結(jié)合,來發(fā)現(xiàn)用戶操作行為, 以保證用戶數(shù)據(jù)的可靠性。應(yīng)用本發(fā)明的用戶操作發(fā)現(xiàn)模塊進(jìn)行網(wǎng)絡(luò)同步,能夠減少同步操作量,減少網(wǎng)絡(luò)流量的消耗。
圖1為本發(fā)明利用文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識ino號進(jìn)行比對的用戶操作發(fā)現(xiàn)方法流程圖。圖2為本發(fā)明利用ino號比對和常規(guī)目錄樹比對相結(jié)合的用戶操作發(fā)現(xiàn)方法流程圖。圖3為本發(fā)明的用戶本地文件系統(tǒng)到遠(yuǎn)程網(wǎng)絡(luò)存儲的同步系統(tǒng)示意圖。
具體實(shí)施例方式下面結(jié)合附圖詳細(xì)說明本發(fā)明的具體實(shí)施方式
。首先我們介紹一下背景知識。文件系統(tǒng)通俗來講是用戶儲存資料的地方。盡管物理上都是硬盤,但是其實(shí)存在多種形式的文件系統(tǒng)。文件系統(tǒng)將信息按樹狀形態(tài)組織,可以帶子結(jié)點(diǎn)的稱之為“目錄”或“文件夾”(本文統(tǒng)稱為“目錄”);存儲資料內(nèi)容的叫“文件”。 目錄和文件都是文件系統(tǒng)中的“結(jié)點(diǎn)”。在Windows下當(dāng)前最為流行的是NTFS、FAT32兩個文件系統(tǒng);在Linux下則是EXT3文件系統(tǒng)。根據(jù)文件系統(tǒng)的特征,文件系統(tǒng)可分為兩類一類是文件系統(tǒng)的“結(jié)點(diǎn)”本身存在唯一標(biāo)識的;例如上面我們提到的NTFS、EXT3 文件系統(tǒng)屬于此類。在Linux/Mac系統(tǒng)中,文件系統(tǒng)的唯一標(biāo)識,通常稱為ino號(這是因?yàn)長inux文件系統(tǒng)中的“結(jié)點(diǎn)”叫inode,“結(jié)點(diǎn)”的唯一標(biāo)識就取了 inode的前3個字母作為代號)。在Windows的NTFS文件系統(tǒng)下,文件系統(tǒng)的唯一標(biāo)識是File ID。另一類是文件系統(tǒng)的“結(jié)點(diǎn)”無唯一標(biāo)識的;例如上面我們提到的FAT32文件系統(tǒng)。下面僅對結(jié)點(diǎn)本身存在唯一標(biāo)識的文件系統(tǒng)進(jìn)行討論,對于無結(jié)點(diǎn)唯一標(biāo)識的文件系統(tǒng),不在本專利討論的范圍之內(nèi)。我們利用文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識作為結(jié)點(diǎn)唯一標(biāo)識,對本地同步目錄的結(jié)點(diǎn)和上一次同步成功時的文件系統(tǒng)結(jié)點(diǎn)進(jìn)行比對,以識別用戶操作行為。下面以Linux系統(tǒng)的自有結(jié)點(diǎn)標(biāo)識ino號為例,對本發(fā)明的用戶操作發(fā)現(xiàn)方法做詳細(xì)描述。如圖1所示,通過對比 ino號及其對應(yīng)結(jié)點(diǎn)的路徑和內(nèi)容變化,來發(fā)現(xiàn)用戶的操作行為。具體判斷方法如下如果某ino號在本地同步目錄和上一次同步成功時的文件系統(tǒng)中都存在,那么判斷(1)如果該ino號在本地同步目錄中的路徑和它在上一次同步成功時的文件系統(tǒng)中的路徑不同,那么可以確定它被移動或改名(改名操作可認(rèn)為是移動操作的特例)。(2)如果該結(jié)點(diǎn)是文件,那么還可以判斷前后的內(nèi)容是否一致,如果不一致則代表發(fā)生了內(nèi)容修改。判斷文件內(nèi)容是否修改,可以通過對比文件大小、文件最后編輯時間是否一致來做粗略的判斷;也可以通過對比文件內(nèi)容的摘要如MD5、SHAl來判斷。請注意對于文件可能兩者同時都發(fā)生,即該文件既被移動,同時又修改了內(nèi)容,所以以上第(1)步和第(2)步操作并非互斥的。另外需要注意的是,我們發(fā)現(xiàn)的并不一定是用戶真實(shí)的操作過程。例如用戶先將 A改名為B,然后將B改名為C,我們發(fā)現(xiàn)的行為則會是A改名為C,而不管中間經(jīng)歷了多少步驟。從同步的角度來說,我們只是要找到一個最經(jīng)濟(jì)的操作步驟,讓目標(biāo)文件系統(tǒng)和源文件系統(tǒng)達(dá)成一致就可以了。如果本地同步目錄中存在的ino號,在上一次同步成功時的文件系統(tǒng)中并不存在,那么我們可以確定該結(jié)點(diǎn)屬于新增結(jié)點(diǎn),同步軟件需要執(zhí)行新建文件或新建目錄的操作。如果本地同步目錄中不存在某個ino號,但在上一次同步成功時的文件系統(tǒng)中該 ino號存在,那么可以確定該結(jié)點(diǎn)已經(jīng)被刪除,同步軟件需要執(zhí)行刪除操作。上面所述的文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識如ino號比對方法也可以與其他發(fā)現(xiàn)用戶操作的方法結(jié)合使用,例如可以與傳統(tǒng)的目錄樹比對方法聯(lián)合使用。如圖2所示,先按ino號對本地同步目錄與上一次同步成功時文件系統(tǒng)進(jìn)行比對, 找出具備相同ino號的結(jié)點(diǎn),并結(jié)合該結(jié)點(diǎn)路徑或文件內(nèi)容的變化,來發(fā)現(xiàn)文件或目錄的移動或改名、文件內(nèi)容的修改操作;然后,將已經(jīng)通過ino號匹配的結(jié)點(diǎn)從同步目錄和上一次同步成功時的文件系統(tǒng)中去除,剩余結(jié)點(diǎn)再通過常規(guī)的目錄樹比對的方式,來發(fā)現(xiàn)新增文件或目錄、刪除文件或目錄、修改文件內(nèi)容等用戶操作。
這種多種用戶操作發(fā)現(xiàn)的方法結(jié)合是有實(shí)際意義的,例如對于編輯類軟件,通常在存盤的時候執(zhí)行以下操作流程1)將要存盤的本地文件先改名為一個臨時文件;2)將當(dāng)前編輯的內(nèi)容存盤;3)如果存盤成功(正常情況),則刪除臨時文件;如果失敗,則刪除存盤失敗的文件,并將臨時文件改回原來的文件名。這樣做的意圖是為了保證用戶數(shù)據(jù)的可靠性。因?yàn)樵诖姹P過程中可能發(fā)生各種意外,比如軟件崩潰、機(jī)器斷電等,導(dǎo)致存盤的文件內(nèi)容不完整。如果沒有先對原始的文件內(nèi)容備份,那么就會在異常情況下丟失用戶的所有數(shù)據(jù)。但是這種做法對以上依據(jù)文件系統(tǒng)唯一標(biāo)識(ino號)來發(fā)現(xiàn)用戶操作來說是不友好的。因?yàn)閷τ脩魜碚f是一個簡單的文件內(nèi)容修改操作,物理文件系統(tǒng)中卻是同一個邏輯上的文件對應(yīng)存盤前后是兩個不同的物理文件,因此具備不同的ino號,從而被識別為先刪除文件,再增加同名的新文件,這就導(dǎo)致了網(wǎng)絡(luò)流量的浪費(fèi)(識別為修改操作的話就可以只傳輸文件修改前后的內(nèi)容的差異,而識別為先刪除后增加新文件則是完整的文件內(nèi)容傳輸)。所幸的是,通過目錄樹比對的方式可以找回這種文件內(nèi)容修改操作(因?yàn)榇姹P前后它的文件路徑?jīng)]有變)。如圖3所示,用戶本地文件系統(tǒng)到遠(yuǎn)程網(wǎng)絡(luò)存儲的同步系統(tǒng)主要包括用戶本地文件系統(tǒng)、歷史狀態(tài)文件系統(tǒng)、用戶操作發(fā)現(xiàn)模塊、用戶操作執(zhí)行模塊和遠(yuǎn)程網(wǎng)絡(luò)文件系統(tǒng)。用戶操作發(fā)現(xiàn)模塊應(yīng)用本發(fā)明的用戶操作發(fā)現(xiàn)方法,對用戶操作行為進(jìn)行有效識別并將發(fā)現(xiàn)的用戶操作傳遞給用戶操作執(zhí)行模塊。用戶操作執(zhí)行模塊將發(fā)現(xiàn)的用戶操作,應(yīng)用于遠(yuǎn)程網(wǎng)絡(luò)文件系統(tǒng),從而完成從本地文件系統(tǒng)到遠(yuǎn)處網(wǎng)絡(luò)存儲的同步過程。所述的用戶本地文件系統(tǒng),是指用戶所使用的PC電腦(包括Windows/MacOS/ Linux等平臺)、Web、手機(jī)等終端下的文件系統(tǒng),通常由操作系統(tǒng)提供操作API (應(yīng)用程序編程接口)。具體API抽象如下1. List (path) _>Entries。即列目錄。該請求傳入一個path參數(shù)。返回path指定的路徑下的子結(jié)點(diǎn)列表。每個子結(jié)點(diǎn)(Entry)包含名稱、ino號、以及其他元信息如修改時間等(由于與本文內(nèi)容無關(guān)不詳細(xì)列舉)。其中ino號為可選項(xiàng),如上所述,對某些文件系統(tǒng)不存在ino號。2. Open (path) _>FiIeHandle。即打開文件以獲得內(nèi)容。該請求傳入path參數(shù),指示要獲取數(shù)據(jù)的文件。返回對應(yīng)的文件句柄,通過該句柄可獲得文件內(nèi)容。所述的歷史狀態(tài)文件系統(tǒng)是一個記錄同步歷史狀態(tài)的文件系統(tǒng),它記錄了上一次同步成功時的文件系統(tǒng)狀態(tài)。該系統(tǒng)通常通過本地數(shù)據(jù)庫(如sqlite)類組織樹狀結(jié)構(gòu)。 該文件系統(tǒng)可以提供與本地文件系統(tǒng)一樣的API,如上面所述的List、Open方法。所述的用戶操作發(fā)現(xiàn)模塊,應(yīng)用本發(fā)明的用戶操作發(fā)現(xiàn)方法,對用戶操作行為進(jìn)行識別。該模塊對于存在自有結(jié)點(diǎn)標(biāo)識的本地文件系統(tǒng),執(zhí)行以下操作。我們以ino號為例并結(jié)合圖1進(jìn)行描述。首先通過遞歸調(diào)用本地文件系統(tǒng)的List,將同步目錄下的所有結(jié)點(diǎn)列出,并將這些結(jié)點(diǎn)按ino號進(jìn)行排序。同樣,歷史狀態(tài)文件系統(tǒng)也將上一次同步成功時的所有節(jié)點(diǎn)按 ino號進(jìn)行排序。然后,可以通過集合求交(以及求差)的算法,來確定哪些結(jié)點(diǎn)是新增的,哪些結(jié)點(diǎn)刪除了,哪些結(jié)點(diǎn)移動或改名了,或內(nèi)容發(fā)生了變化。實(shí)際應(yīng)用中,可以將Ino號比對與常規(guī)的目錄樹比對方式結(jié)合。如圖2所示,先通過ino號比對,發(fā)現(xiàn)文件或目錄被移動或改名的用戶操作、文件內(nèi)容被修改的用戶操作;再對剩余結(jié)點(diǎn)進(jìn)行常規(guī)的目錄樹比對,以發(fā)現(xiàn)新增文件或目錄、刪除文件或目錄、修改文件內(nèi)容的用戶操作。目錄樹比對的具體做法和ino號比對類似,只是現(xiàn)在改用結(jié)點(diǎn)的名稱,也就是文件名或目錄名進(jìn)行排序,以此去發(fā)現(xiàn)結(jié)點(diǎn)增加、刪除和內(nèi)容變化(以名稱為基準(zhǔn)的匹配算法發(fā)現(xiàn)不了改名和移動)。所述的用戶操作執(zhí)行模塊,將發(fā)現(xiàn)的用戶操作,應(yīng)用于遠(yuǎn)程網(wǎng)絡(luò)文件系統(tǒng),從而完成從本地文件系統(tǒng)到遠(yuǎn)處網(wǎng)絡(luò)存儲的同步過程。所述的遠(yuǎn)程網(wǎng)絡(luò)文件系統(tǒng),是要將發(fā)現(xiàn)的用戶操作應(yīng)用的目標(biāo)。也就是通常我們說的網(wǎng)盤,當(dāng)然也可以是其他產(chǎn)品形態(tài)的網(wǎng)絡(luò)存儲。以上僅是本發(fā)明的具體應(yīng)用范例,對本發(fā)明的保護(hù)范圍不構(gòu)成任何限制。凡采用等同變換或者等效替換而形成的技術(shù)方案,均落在本發(fā)明權(quán)利保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種文件系統(tǒng)的用戶操作發(fā)現(xiàn)方法,其特征在于,所述方法利用文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識作為結(jié)點(diǎn)唯一標(biāo)識,對本地同步目錄的結(jié)點(diǎn)和上一次同步成功時的文件系統(tǒng)結(jié)點(diǎn)進(jìn)行比對,以識別用戶操作行為。
2.根據(jù)權(quán)利要求1的方法,其特征在于,所述的結(jié)點(diǎn)唯一標(biāo)識在Linux/Mac系統(tǒng)下是 ino號,在Windows的NTFS文件系統(tǒng)下是File ID。
3.根據(jù)權(quán)利要求1的方法,其特征在于,所述方法包括以下步驟 -將本地同步目錄中的所有結(jié)點(diǎn)按結(jié)點(diǎn)唯一標(biāo)識排序;-將上一次同步成功時的所有節(jié)點(diǎn)按結(jié)點(diǎn)唯一標(biāo)識排序;-對本地同步目錄的結(jié)點(diǎn)唯一標(biāo)識和上一次同步成功時的結(jié)點(diǎn)唯一標(biāo)識進(jìn)行比對,并執(zhí)行以下操作如果某個結(jié)點(diǎn)唯一標(biāo)識在本地同步目錄中和在上一次同步成功時的文件系統(tǒng)中都存在,那么比對該結(jié)點(diǎn)在本地同步目錄中的路徑與它在上一次同步成功時的文件系統(tǒng)中的路徑 如果路徑不同,則確定該文件或目錄被用戶移動或改名;并且如果該結(jié)點(diǎn)是文件,對本地同步目錄和上一次同步成功時該文件的內(nèi)容進(jìn)行比對如果內(nèi)容不一致,則表示該文件內(nèi)容被修改;如果本地同步目錄中存在的結(jié)點(diǎn)唯一標(biāo)識,在上一次同步成功時的文件系統(tǒng)中并不存在,則確定該結(jié)點(diǎn)為用戶新增的文件或目錄;如果本地同步目錄中不存在某個結(jié)點(diǎn)唯一標(biāo)識,但在上一次同步成功時的文件系統(tǒng)中該結(jié)點(diǎn)唯一標(biāo)識存在,則確定該文件或目錄被用戶刪除。
4.根據(jù)權(quán)利要求1的方法,其特征在于,所述方法包括以下步驟-對本地同步目錄的結(jié)點(diǎn)唯一標(biāo)識和上一次同步成功時的結(jié)點(diǎn)唯一標(biāo)識進(jìn)行比對,找出相同的結(jié)點(diǎn)唯一標(biāo)識,并結(jié)合該結(jié)點(diǎn)路徑或文件內(nèi)容的變化,以發(fā)現(xiàn)文件或目錄移動或改名的操作以及文件內(nèi)容被修改的操作;-將已經(jīng)通過結(jié)點(diǎn)唯一標(biāo)識匹配的結(jié)點(diǎn)從本地同步目錄和上一次同步成功時的文件系統(tǒng)中去除;-將剩余結(jié)點(diǎn)通過目錄樹比對的方式,以發(fā)現(xiàn)文件修改、新增文件或目錄以及刪除文件或目錄的用戶操作。
5.根據(jù)權(quán)利要求3或4的方法,其特征在于,文件內(nèi)容是否修改通過對比文件大小和文件最后編輯時間是否一致來判斷;或者通過對比文件內(nèi)容的摘要如MD5、SHAl來判斷。
6.一種同步系統(tǒng),其特征在于,該系統(tǒng)包括一用戶操作發(fā)現(xiàn)模塊,所述的用戶操作發(fā)現(xiàn)模塊利用文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識作為結(jié)點(diǎn)唯一標(biāo)識,對本地同步目錄的結(jié)點(diǎn)和上一次同步成功時的文件系統(tǒng)結(jié)點(diǎn)進(jìn)行比對,以識別用戶操作行為。
7.根據(jù)權(quán)利要求6的系統(tǒng),其特征在于,所述的結(jié)點(diǎn)唯一標(biāo)識在Linux/Mac系統(tǒng)下是 ino號,在Windows的NTFS文件系統(tǒng)下是File ID。
8.根據(jù)權(quán)利要求6的系統(tǒng),其特征在于,所述的用戶操作發(fā)現(xiàn)模塊包括 將本地同步目錄中的所有結(jié)點(diǎn)按結(jié)點(diǎn)唯一標(biāo)識排序的單元模塊;將上一次同步成功時的所有節(jié)點(diǎn)按結(jié)點(diǎn)唯一標(biāo)識排序的單元模塊; 對本地同步目錄的結(jié)點(diǎn)唯一標(biāo)識和上一次同步成功時的結(jié)點(diǎn)唯一標(biāo)識進(jìn)行比對的單元模塊,該單元模塊執(zhí)行以下操作如果某個結(jié)點(diǎn)唯一標(biāo)識在本地同步目錄中和在上一次同步成功時的文件系統(tǒng)中都存在,那么比對該結(jié)點(diǎn)在本地同步目錄中的路徑與它在上一次同步成功時的文件系統(tǒng)中的路徑 如果路徑不同,則確定該文件或目錄被用戶移動或改名;并且如果該結(jié)點(diǎn)是文件,對本地同步目錄和上一次同步成功時該文件的內(nèi)容進(jìn)行比對如果內(nèi)容不一致,則表示該文件內(nèi)容被修改;如果本地同步目錄中存在的結(jié)點(diǎn)唯一標(biāo)識,在上一次同步成功時的文件系統(tǒng)中并不存在,則確定該結(jié)點(diǎn)為用戶新增的文件或目錄;如果本地同步目錄中不存在某個結(jié)點(diǎn)唯一標(biāo)識,但在上一次同步成功時的文件系統(tǒng)中該結(jié)點(diǎn)唯一標(biāo)識存在,則確定該文件或目錄被用戶刪除。
9.根據(jù)權(quán)利要求6的系統(tǒng),其特征在于,所述的用戶操作發(fā)現(xiàn)模塊包括對本地同步目錄的結(jié)點(diǎn)唯一標(biāo)識和上一次同步成功時的結(jié)點(diǎn)唯一標(biāo)識進(jìn)行比對的單元模塊,用于找出相同的結(jié)點(diǎn)唯一標(biāo)識,并結(jié)合該結(jié)點(diǎn)路徑或文件內(nèi)容的變化,以發(fā)現(xiàn)文件或目錄移動或改名的操作以及文件內(nèi)容被修改的操作;將已經(jīng)通過結(jié)點(diǎn)唯一標(biāo)識匹配的結(jié)點(diǎn)從本地同步目錄和上一次同步成功時的文件系統(tǒng)中去除的單元模塊;將剩余結(jié)點(diǎn)通過目錄樹比對的單元模塊,用于發(fā)現(xiàn)文件修改、新增文件或目錄以及刪除文件或目錄的用戶操作。
10.根據(jù)權(quán)利要求8或9的系統(tǒng),其特征在于,文件內(nèi)容是否修改通過對比文件大小和文件最后編輯時間是否一致來判斷;或者通過對比文件內(nèi)容的摘要如MD5、SHAl來判斷。
全文摘要
一種文件系統(tǒng)的用戶操作智能發(fā)現(xiàn)方法,利用文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識作為結(jié)點(diǎn)唯一標(biāo)識,對本地同步目錄的結(jié)點(diǎn)和上一次同步成功時的文件系統(tǒng)結(jié)點(diǎn)進(jìn)行比對,來識別用戶操作行為。具體地,本發(fā)明利用文件系統(tǒng)自有的結(jié)點(diǎn)標(biāo)識ino號作為唯一標(biāo)識,通過對比ino號及其對應(yīng)結(jié)點(diǎn)的路徑和內(nèi)容的變化,對用戶的新增、刪除、改名、移動、文件內(nèi)容修改等操作進(jìn)行識別。這種利用文件系統(tǒng)自有結(jié)點(diǎn)標(biāo)識比對方法還可以與傳統(tǒng)的目錄樹比對方法相結(jié)合,來發(fā)現(xiàn)用戶操作行為。應(yīng)用本發(fā)明的文件同步系統(tǒng),能夠減少同步操作量,減少網(wǎng)絡(luò)流量的消耗。
文檔編號G06F17/30GK102360410SQ20111030279
公開日2012年2月22日 申請日期2011年9月30日 優(yōu)先權(quán)日2011年9月30日
發(fā)明者許式偉 申請人:許式偉