[筆記]在KVM VPS上透過 fuse-sshfs + pdumpfs 做wordpress異地備援
本文于3274天之前發表,文章內容可能已經過時。
因為之前手賤,把原有的BLOG的資料檔都砍光光,雖然文章內容都還留著,但是圖片都變成叉燒包了
不過換到新的WP之後,發現多了好多布景主題可以用,現在用的這個我就覺得很棒!
也為了要避免再次發生之前手殘的錯誤,所以一直在找一些異地備援的方式。
Wordpress本身的外掛雖然有很多號稱可以透過FTP之類的方式把備份檔案丟去其他地方
但測試了幾個之後,發現要不就是沒有定時的功能,要不就是要額外收費。
想來想去,還是乾脆自己在console下備份比較能掌握。
之前有玩過lsync,這次改用另外一招 sshfs + pdumpfs 來作作看
一開始在這台主機上要安裝fuse-sshfs 就碰到了很多問題,yum沒有預設,要另外下載,COMPILE又發生沒compiler的狀況,一一排除後,卻出現一個無解的問題。
fuse: failed to open /dev/fuse: Permission denied
翻了GOOGLE,大部分的解法都是把執行的帳號加入fuse群組
問題是,我是用 root 執行,不應該會有這種權限的錯誤才對
最後發現是因為openvz的VPS的關係,所以不能在這台去執行..
好吧,反正我是要異地備援,那我去另一台KVM的VPS安裝總可以了吧!
安裝過程就跟其他用yum安裝的軟體一樣(yum 真是好用!以前都還要自己解相依性的問題..)
yum install -y pdumpfs fuse-sshfs
接著在remote 端建立備份用的目錄還有mount用的目錄
mkdir /usr/local/abc_backupmkdir /abc_backup
然後先把remote 端的目錄結構用sshfs mount 到/abc_backup
sshfs abc@abc.com:/ /abc_backup/ -p 222
這樣的指令會要求輸入密碼,要怎麼把密碼放進去,還要再研究。
好了之後就看一下是不是有沒有正確掛載
ls -la /abc_backup
正常的話應該就會看到remote端的目錄結構了
接下來換pdumpfs 上場
pdumpfs的介紹可以看官網 http://0xcc.net/pdumpfs/index.html.en
簡單說就是rsync搭配time stamp + hard link 做到差異備份這樣
指令也很簡單
pdumpfs /abc_backup /usr/local/abc_backup
一行就搞定了!
pdumpfs 可用的參數如下,真的很簡單!
Usage: pdumpfs SRC DEST [BASE]
-e, –exclude=PATTERN exclude files/directories matching PATTERN
-s, –exclude-by-size=SIZE exclude files larger than SIZE
-w, –exclude-by-glob=GLOB exclude files matching GLOB
-l, –log-file=FILE write a log to FILE
-v, –version print version information and exit
-q, –quiet suppress all normal output
-n, –dry-run don’t actually run any commands
-h, –help show this help message
沒信心的話,可以用 -n 試跑一次看看
確定之後再寫到crontab裡面去!
簡單整理步驟如下
1.在要備份的機器上,先寫好mysql dump的crontab,大概長這樣,記得要自己加入日期參數之類的
mysqladmin -uroot -pxxxxx wordpress > /123/wp.sql
2.在備份目的的機器上,安裝sshfs / pdumpfs
3.在備份目的機器上,建立掛載用的目錄/abc 還有備份用的目錄/usr/local/backup/abc
4.用sshfs掛載遠端目錄到/abc
5.用pdumpfs 把掛載進來的遠端目錄底下的 /123/wp.sql 還有 /var/www/html/wp 都備份到 /usr/local/backup/abc
6.測試完成後,在備份目的機器上,寫入crontab
大功告成!
我這兩個國外的VPS在互連,平均速率幾乎都在4Mb/5Mb ,拋資料真的很快!