星期三, 7月 04, 2007

軟體重裝工具推薦(1)-應用程式資料分享篇-分散式雜湊表(Distributed hash table)與memcached

分享一個AP資料分享的新實作應用:分散式雜湊表(Distributed hash table) 與 memcached系統:

跨程式與跨機器AP要分享資料, 除了用DB, 為了執行效率, 資料安全與備援能力, 我們可以採用網路儲存之NAS檔案, 或是訊息平台與shared memory結合等方法.

如果是經常要非循序查詢的資料結構資料, 放在hash table很方便, 使用hash table 模組又能夠放在 shared memory 的話, 就更方便了, 可讓同機器不同AP去存取. 若使用STL等標準資料結構的hash table函式庫, 無法直接放到shared memory上, 除非自己去修改實作. 我因為工作需要, 曾經實作了可供不同程式同時讀寫的shared memory AVL tree程式庫(可參考http://aery.scope.googlepages.com/coolcodeworks).

這還不能解決跨機器的問題, 所以我們可以加上訊息平台, 發送訊息向能夠讀取的程式要資料.

後來更好的技術出現啦, 2001年出現了 Distributed hash tables (DHTs) 這樣的觀念, 並且開始了廣泛的實作應用(如P2P的BitTorrent用於分散存放 routing 資料), 可以參考網址:
http://en.wikipedia.org/wiki/Distributed_hash_table

DHT網路中的各機器加入與組織方式像P2P網路具有彈性, 因此DHT 提供了三種優勢特性:
Decentralisation(去集中化), Scalability(可延展性), Fault tolerance(容錯能力, 當系統產生fault 而能繼續提供服務的能力).

memcached (http://www.danga.com/memcached/) 是一種高效率分散式記憶體物件caching系統, 它是應用DHT的開放原始碼專案, 此專案提供的程式庫管理與利用網路上參與各機器的部份記憶體, 透過一致性API函數, 可以存取網路程式或WEB程式的共享資料, 安裝使用方便, 有多種程式語言的API, 網頁程式使用此程式庫可加快執行效率, 故許多網站皆有使用(如Facebook, LiveJournal, Wikipedia), 相關介紹可參考 http://en.wikipedia.org/wiki/Memcached

有需要的人可以去研究看看...

Yuan-Feng Lu

星期二, 1月 09, 2007

檔案資料增量備份的工具xxcopy

因為友人的大量每日資料搬移備份需求,
所以幫他調查了可用的工具, 發覺了xxcopy 這一個freeware工具,
應該是不錯用.

以下是相關的使用說明(節錄修改自資安論壇 備援系統討論版的一篇文章):

第一步:下載工具

前往 http://www.xxcopy.com/index.htm#download 下載xxcopy。

下載後,把xxcopy.zip壓縮包解壓到一檔夾下,執行install.bat,程式詢問時,一律按下Y鍵完成安裝。

第二步:編寫批次處理命令

假設我們要把D:\data下的所有新建或更新過的檔(夾)拷貝到E:\back檔夾下,那可以執行notepad,啟動“記事本”工具,
編輯批次檔, 輸入如下命令:

xxcopy "D:\data" "E:\back" /s /k /h /bi /yy

然後把該文件儲存為如d:\back.bat批次檔。以後只要執行d:\back.bat即可進行文件的備份工作。

第三步:深入理解參數

xxcopy參數非常多(可以打xxcopy /? 看參數說明),重要參數意義如下:

/s 表示連同子檔夾處理
/k 原始檔案仍保留其原有屬性
/h 連同系統、隱藏檔一起拷貝
/bi 只拷貝新建或更新過的(根據檔時間和長度判斷)文件
/yy 覆蓋檔時自動回答“是”,並不出現提問資訊

使用例1:只備份相關檔

很多時候我們只要備份某一類型檔,如*.doc、*.xls、*.ppt、*.txt等,而無需備份其他檔,這時仍可以使用xxcopy完成。

大家只要啟動“記事本”,輸入如下命令:
xxcopy "d:\data" "e:\back" /s /k /h /bi /yy /in*.doc /in*.xls /in*.ppt /in*.txt
把它保存為include.bat,雙擊它,只會備份d:\data下的*.doc、*.xls、*.ppt、*.txt文件到e:\back文件夾下。

小提示

多種類型檔分別用/in參數隔開,並把/in參數放在命令行的最後。如輸入
xxcopy "d:\data" "e:\back" /s /k /h /bi /yy /in*.doc /in*.xls /in*.ppt /in*.txt /in*.bmp /*.tif,則還會備份*.bmp和*.tif文件。

使用例2:垃圾檔不備份

有時,我們並不想備份*.tmp和*.bak檔,這時可以啟動“記事本”,並輸入如下命令:
xxcopy "d:\data" "e:\back" /s /k /h /bi /yy /x*.tmp /x*.bak
把它保存為exclude.bat,雙擊此檔,則只會備份d:\data下除了*.bak和*.tmp的文件到e:\back文件夾下。

小提示

★多種類型檔分別用/x參數隔開,並把/x參數放在命令行的最後。如輸入xxcopy "d:\data" "e:\back" /s /k /h /bi /x*.tmp /x*.bak /*.abc,則xxcopy也不會處理*.abc文件。

★刪除檔案,輸入
xxcopy *.tmp /s /h /yy /rs可把當前檔夾(包括了檔夾)下所有*.tmp檔刪除掉。

使用例3:備份指定日期檔

輸入xxcopy "d:\data" "e:\back" /s /k /h /bi /da:2003-12-22,只備份2003年12月22日之後的檔。
xxcopy "d:\data" "e:\back" /s /k /h /bi /db:2003-12-25,只備份2003年12月25日之前檔。
xxcopy "d:\data" "e:\back" /s /k /h /bi /da:2003-12-22 /db:2003-12-25,只備份2003年12月22日和2003年12月25日之間的檔。