ice文檔選擇性翻譯 icepatch2

 

icePatch2 是一個容易配置和使用的高效的文件補丁服務。它包括以下組件:

1.IcePatch 服務器(icepatch2server)

2.一個基於文本的IcePatch客戶端(icepatch2client)

3.一個基於文本的壓縮和計算校驗和的工具(icepatch2calc)

4.一個用於開發客戶化IcePatch2客戶端的sliceAPIC++開發庫。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

IcePatch服務能夠將一個文件系統目錄包括其中的文件和子目錄分發到各個客戶端。使用icepatch2calc命令壓縮這些文件和產生一個包含每個文件的校驗和的索引。服務器傳送壓

縮文件給客戶端,這些文件將會在客戶端恢復爲數據目錄和內容,修補任何被在之前運行的被修改過的文件。

 

1.使用icepatch2calc

假設我們在服務器數據目錄下擁有如下圖的文件目錄結構。

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

 

假設名字爲emptyFile的文件是空文件,其他的都是包含數據的文件。

服務器要準備傳輸這些目錄,你必須首先運行命令icepatch2calc

運行完這個命令,數據目錄的內容將會變成如下圖所示。

注意到icepatch2calc將數據目錄中的文件壓縮(除了emptyfile,它沒有被壓縮)。同時注意到icepatch2calc創建了附加的文件--icepatch2.sum.這個文件的內容如下所示:

 

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3a52ce780950d4d969792a2559cd519d7ee8c727 -1

/bin bd362140a3074eb3edb5e4657561e029092c3d91 -1

/bin/hello 77b11db586a1f20aab8553284241bb3cd532b3d5 70

/emptyFile 082c37fc2641db68d195df83844168f8a464eada 0

/nonEmptyFile aec7301c408e6ce184ae5a34e0ea46e0f0563746 72

 

校驗和文件中的內容包含了每個沒有被壓縮的文件名或者目錄名,校驗和,和字節數。目錄的字節數爲-1,沒有被壓縮的文件字節數爲0,被壓縮的文件字節數爲壓縮後文件大小。

每一行是按路徑名字母順序來排序。

    如果你從數據目錄中添加,刪除,修改了文件,你必須停止服務器,重新運行icepatch2calc來更新IcePatch2.sum這個校驗和文件,然後重啓服務器。

 

1.1icepatch2calc 命令行選項

    icepatch2calc 使用如下句法

              icepatch2calc [option] data_dir [file...]

       一般來說,你會簡單指定一個數據目錄來運行icepatch2calc,這樣程序就會在數據目錄中壓縮所有的文件,和在創建的校驗和文件爲每一個文件或者目錄創建一項紀錄。

    你同樣可以在命令行中指定文件和目錄,在這種情況下,icepatch2calc僅爲指定的文件或者目錄壓縮和計算校驗和。這對你擁有非常大的文件樹而只對其中做了很小一部分更新時

非常有用。你指定的文件名或者目錄名必須是相對於數據目錄,如果你使用絕對路徑,路徑名必須使用數據目錄作爲前綴。

 

       命令支持以下選項

       --h,  --help

       --v,  --version

       --z,  --compress

       通常,icepatch2calc僅僅在文件沒有壓縮版本存在或者文件壓縮版本的修改時間早於沒有沒有壓縮版本才掃描數據目錄和壓縮一個文件。如果你指定--z,這個工組將會重新掃描和壓縮整個數據目錄而不管文件的時間戳,這對懷疑數據目錄的時間戳可能出錯的情況下很有用。

 

       --Z,  --no-compress

       這個選項允許你創建一個客戶端校驗和文件。

       不要使用這個選項爲服務器創建校驗和文件。這個選項是爲創建客戶端 IcePatch.sum文件,用來在分發版本中更新軟件。

       --i,  --case-insensitive

       這個選項僅對禁用文件名不同,

       --V,  --verbose

       這個選項將輸出每個被壓縮和計算校驗和的消息。

 

2.運行服務器

 

一旦你在數據目錄上行了icepatch2calc命令,你可以啓動icepatch2server了。

           $ icepatch2server

服務器期待數據目錄作爲唯一的命令行參數,如果你忽略指定目錄,服務器將使用配置文件中 IcePatch2.directory屬性值來決定使用哪個目錄。

服務器有兩個不同的endpoint,一個是常規操作,一個是用來管理

       IcePatch2.Endpoints

       這個屬性決定服務器在哪個endpoint監聽客戶端請求,必須指定。

       IcePatch2.Admin.Endpoints

       如果這個屬性沒有指定,關掉服務器只能使用kill命令。如果指定,服務器就提供了附加的IcePatch2::Admin接口:

       interface Admin{

              void shutdowm();

       };

       默認情況下,這個對象的標識爲 IcePatch2/admin,你可以通過設定IcePatch2.InstanceName屬性來更改標識的類別。

調用shutdown操作來關掉服務器,注意任意訪問到admin接口端點的客戶端都能關掉服務,一般你需要設定這個屬性來組織懷有敵意的客戶端訪問。

 

icepatch2server 選項

       -h,  --help

       -v,  --version

 

3.運行客戶端

一旦服務器運行起來,你可以使用icepatch2client命令來從服務器維護的數據目錄中取得一份拷貝。

例如:

       $ icepatch2client --IcePatch2.Endpoints="tcp -h somehost.com /-p 10000"

客戶端期望數據目錄作爲它唯一的命令行參數。像服務器一樣,你必須指定IcePatch2.Endpints屬性,使得客戶端知道去哪裏找服務器。

    如果你之前沒有運行過客戶端,他會問你是否想徹底更新,你必須回答yes(或者使用-t參數運行客戶端),客戶端將會執行如下步驟:

       1.它遍歷本地數據目錄,創建本地IcePatch2.sum校驗和文件。

       2.它從服務器獲得相關的校驗和文件隊列,與本地的校驗和文件隊列比較。

              1'客戶端刪除在本地校驗和文件出現而沒有在服務器檢驗和文件出現的文件。

              2'客戶端恢復在本地校驗和文件沒有出現而存在於服務器校驗和文件中的文件。

              3'客戶端爲每個客戶端與服務端不相同文件修補。

客戶端完成後,客戶端內容與服務器內容相同,但是客戶端只創建了沒有壓縮的文件,而服務端存儲了壓縮版本,這樣簡單的避免在客戶端每次恢復時重複壓縮文件。

 

3.1 使用icepatch2client進行局部更新

 

一旦你已經運行了客戶端,在客戶端數據目錄下就包含了IcePatch2.sum文件,它體現了數據目錄中的內容。如果你第二次運行icepatch2client,那麼程序就會拿着客戶端的

IcePatch2.sum與服務器中的比較它們中每一行記錄。如果文件內容不一樣,客戶端就會更新對應的文件,下載服務器有而客戶端沒有的文件,刪掉服務器沒有而客戶端有的文件。  如果你編輯一個客戶端文件,更改了其中的內容,icepatch2client不會意識到文件的改變,因此不會去同步服務器文件內容。這是因爲客戶端不會自動爲一個文件重新計算校驗和來判斷當前Icepatch2.sum中的存儲的校驗和是否與實際內容的校驗和相符。

   同樣,如果你隨意在客戶端創建了一個文件,但是這個文件既沒有在客戶端也沒有在服務器端的校驗和文件中記錄,那麼這個文件將簡單的放在一邊。換句話說,一個普通的修補操作。。

    如果你創建了與發佈包無關的本地文件或者你在本地修改了一些文件,而且你想這些修改能在服務器端體現,你必須運行使用命令行選項-t來徹底修補。這樣將會強制客戶端遍歷本地數據目錄和爲每個文件重新計算校驗和,然後與服務器端比較這些校驗和。結果,如果你編輯本地一個文件使之與服務器不同,那麼它會被強制更新,同樣,你在客戶端新增一個文件,如果服務器端沒有的話,它將被刪除。也就是說在客戶端任何修改都不會對服務器有影響,可以通過完全更新干掉客戶端的不同步。

 

3.2 阻止刪除本地文件

 

默認情況下,如果服務器沒有的文件,而在客戶端有,那麼完全更新時文件將會刪掉。如果你不想這樣,你可以將IcePatch2.Remove屬性設值爲0(默認爲1),這樣客戶端文件就不會被刪除了,無論是一般更新還是完全更新。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章