我有一個使用rdiff進行在線備份的產品。目前是什麼情況是:流rdiff - 三角洲差異?
將文件複製到一個臨時區域(所以該文件將不會消失或者被修改,而我們在它的工作)
哈希原始文件,並計算出使用rdiff簽名(用於增量差異) 計算一個rdiff進行增量差(如果我們沒有現有版本中,這個步驟是跳過)
壓縮&加密所得到的增量差
目前,這些階段是相互獨立執行的。最終的結果是我們多次迭代文件。對於小文件來說,這並不是什麼大問題(特別是磁盤緩存),但對於大文件(10 GB甚至100 GB)來說,這是一個真正的性能殺手。
我想將所有這些步驟合併爲一個讀/寫通行證。
要做到這一點,我們必須能夠以流方式執行上述所有步驟,同時仍保留所有「輸出」 - 文件哈希,rdiff簽名,壓縮的&加密差異文件。這將需要從源文件讀取一塊數據(比如100k?),然後迭代內存中的文件以更新散列,rdiff簽名,做差異差異,然後將輸出寫入壓縮/加密輸出流。目標是大大減少我們所做的磁盤抖動量。
目前我們使用rdiff.exe(這是底層librsync庫頂層的薄層)來計算簽名並生成二進制增量。這意味着這些都是在一個獨立的過程中完成的,並且是以一次性完成的,而不是流式時尚。
我怎樣才能得到這個來做我需要使用librsync庫?
你是什麼意思,「適當的鎖定標誌」?我如何實現這一目標?另外,你說「壓縮和加密可以與計算三角洲並行完成」,這是如何實現的?我只是沒有看到(試圖實現這一點後幾小時)如何可能。你會怎麼做? – spentak 2011-02-17 15:48:40