backup

BitTorrent Sync

[華語, cmn-Hant-TW] 之前有蠻長一段時間用 Unison 同步各台電腦的資料夾,不過設定起來有點煩,而且某些時候會噴同步錯誤,重灌之後就懶得設了,反正之前同步主要目的是備份,幾台主力工作機各自都有備份機制,沒同步也沒差。 後來看到 SparkleShare 這個同步工具,試用了一下覺得還不錯,不過並不完全符合我的需求。首先 SparkleShare 用 git 當後端,用 git 的好處是每次同步的版本都可以留下記錄,問題是我只要同步又沒有要版本控制,一堆多媒體檔案改來改去弄出肥大的 git repo 還不能清,而且一樣某些時候會噴同步錯誤,要自訂的話設定起來又有點煩雜,懶得用,對於同步這件事也就繼續不了了之。 直到前一陣子 BitTorrent 推出 Sync,研究了一下又讓我對同步產生了興趣。 Sync 用一串叫 secret 的字串來控制目錄同步,然後把這串字 hash 之後丟到 tracker 上去比對方便遠端同步。這個 secret 字串可以自動產生,不放心的話也可以手動加工變長,各台機器裡面只要有目錄設成相同的 secret,彼此間就會自動同步。除了原本的 secret 之外,系統還會自動產生另一組對應的唯讀 secret,方便單向同步用,另外還可以手動產生限時的 secret,方便短時間分享時使用。因為剛開始還沒支援 FreeBSD,所以就一直觀望,直到正式支援的 Beta 版 (但是沒實作 FS…

zfs snapshot 管理

[華語, cmn-Hant-TW] 目前 zfs 對我來說主要就是備份用,使用的方式大致上就是逐日備份,然後定期清掉舊的備份,試過一些工具不過都覺得不是很理想,所以就自己動手弄了,備份的方式不限定,只要把檔案塞進目錄即可,目前的話大致上是 windows 用 windows 的機制,mac 用 time machine,其他 linux 或 freebsd 用 rsync,對備份主機來說只要各別開適當的分享出去即可。備份跟清理備份的時間也可以錯開,我是習慣晚上11點左右打 snapshot 跟清舊備份,其他機器有一整天的時間可以丟資料到備份主機上去,對 snapshot 的管理,主要的需求是: 用日期當 snapshot 的名字,例如 backup@2012-07-30 可以分別針對年,月,日設定保存個數,例如30天內的每日備份,6個月內的每月保留一備份,3年內每年保留一備份。 年、月原則上優先保留該年或該月之第一天,如果當天剛好沒備份,就往次日找,直到找到有備份為止。 用 perl 寫了一個 snapshot.pl 來配合這樣的需求,使用方法也很簡單,比如說要處理 backup/pighead,那就 # ./snapshot.pl backup/pighead# ./snapshot.pl backup/pighead 即可,預設是保留32天內的逐日備份,12個月內每月保留一份,一年內保留一份,如果不想照預設的話,後面可以加參數 D-M-Y (日-月-年),這個數字包含當日/月/年,例如要保留三天內、一月內、二年內:…