2011年5月23日 星期一

SSH + Rsync的備份機制




SSH + Rsync的備份機制
卓國興 2011/05/21



備份流程示意圖:

ssh+rsync的備份機制

為何要備份,又,備份的資料與方法要如何決定呢?有哪些備份機制可以快速簡單呢?



備份是個很重要的工作,電腦周邊硬體你無法去保證他是天天『平安無事』的,就算不是硬體造成的,也有可能發生在你的不小心誤刪、中毒或被入侵的不可預期的情況而遺失資料,此時,備份的資料就是你的救星。
要知道,系統與軟體損毀,重灌就好,資料遺失,就像『大江東去』。
Linux
上的備分方法有很多種,端視個人的需求去取用,可以複雜,可以簡單,dd tar cpio dump等指令,都是不錯的備份工具,若要達到快速、簡單又安全,那麼,依小弟的個人淺見,把rsync加上ssh的加密機制,將是很好的選擇。
rsync
使用所謂『rsync演算法』,進 行 檔 案 比 對 、 傳 輸 與 複 製,可以很快的比對來源與目的端檔案的異動部份,非每次都進行完整的備份,所以,速度與頻寬的利用,都相當優異。
rsync
是撰寫來取代rcpscp的。可以用來實現透過rsync/ssh,從多個client端以鏡像(mirror)備份到伺服器。搭配cron排程,任何人皆可排程讓多台電腦與伺服器間使用自動加密過、基於rsync的鏡像備份。
要備份哪些目錄,端是個人的需求,通常有網站,會備份/var/www /var/lib/mysql等放置資料檔案的地方,若要備份設定檔案,則會字加入/etc/apache2 /etc/php5等的目錄
不需要備份的目錄:
linux系統中,就算是整個/都要備份,但也需忽略掉一些特殊的目錄,像是/proc這個程序執行的目錄
/mnt
/media 用來掛載了其他的裝置的目錄,不需要備份
/dev
設備檔目錄這個也可以不去理會
/tmp
這個暫存檔目錄也是無需備份的


Linux端使用 ssh+rsync 的備份方法
Server
端:
只要啟動 ssh server
/etc/init.d/ssh start
rcconf
ssh設為開機啟動

client
端執行:(註:如果你使用linux系統,並且要備份具特殊權限的東西(mysql),那麼需以root身份執行以下動作)
ssh-keygen [-t dsa|rsa](
不要輸入passphares的密碼)於自家目錄下產生~/.ssh/id_rsa id_rsa.pub
cat  ~/.ssh/id_rsa.pub | ssh -l root  serverIP "cat - >> ~/.ssh/authorized_keys"
ssh -l root serverIP (
確認不需密碼可以登入,就可以進行以下的備份動作了)

備份與取回
ssh -l root serverIP ‘mkdir /root/backup’ (
登入遠端,並建立backup目錄) 

備份到遠端
rsync -av --delete --backup --backup-dir=/root/backu/recycle/`date +%F` --rsh=ssh --stats
目錄1  目錄2 --numeric-ids  root@遠端ip:/root/backup

 取回備份
rsync -v -u -a --numeric-ids --delete --backup --backup-dir=/root/backu/recycle/`date +%F` --rsh=ssh --stats root@
遠端ip:/root/backup/目錄1 :/root/backup/目錄2 .
注意,不同的linux作業系統應使用 --numeric-ids, 這是因為相同的使用者名稱,在不同的系統可能有不同的uid/gid,如mysql,以此參數健行備份與還原,方能維持還原回來的資料為原來的uid /gid,不過,若是你更換或升級系統,有可能造成還原的資料的uid/gid對應的使用者錯誤,例如mysql,此時,你可以手動 chown -R mysql /var/lib/mysql來還原使用者身份。
--numeric-ids
不將傳送端檔案的uidgid,與目的端的使用者/群組進行配對. 若傳送端並沒有uidgid的對應名稱(:原帳號群組被刪除的遺留檔案), 或目的端沒有相對應的帳號/群組,保留數字型態的uid/gid

 另外,使用 --backup --backup-dir=/root/backu/recycle/`date +%F`, 則是一個使用類似資源回收統的機制,來對同步的動作做一個保護機制,當本地端新編修或刪除的程式碼,經同步後,與端的目的目錄就會跟本地端相同了,若你欲 取回之前的舊的、刪除的程式碼,就可以透過此機制,去backup-dir所指定的目錄(如:/root/backup/recycle /2001-05-21)取回了
-b, --backup
目的地端先前已經存在的檔案在傳輸或刪除前會被備份.  

--backup-dir=DIR 設定備份的資料夾.   

--suffix=SUFFIX 指定備份的檔案名稱字尾形式(預設為~).

--bwlimit=KBPS
定義傳輸頻寬的大小(KBytes/),這個可以限定你進行同步時,使用的頻寬,如果家裡的電腦是多人使用的環境,可以使用此參數限制上傳或下載的頻寬,以免讓家裡面其他使用電腦的人,覺得上網的速度受到影響
 

使用crontab做定時備份
設定 crontab , 定時執行備份
sudo gedit /root/bkeclass.sh


/root/bkeclass.sh的內容如下:
#! /bin/sh
rsync -av  --delete --backup --backup-dir=/root/backu/recycle/`date +%F` --rsh=ssh --stats
目錄1  目錄2  --numeric-ids root@遠端ip:/root/backup


加入可執行權限:
sudo chmod u+x /root/bkeclass.sh
定時備份:
sudo crontab -e
0 3 * * * /root/bkeclass.sh
註:每日 3 時執行 bkeclass.sh 以備份資料
列出定時備份
sudo crontab -l
rcconf
cron選起來

下載使用快速設定工具 ensshRsync.sh工具
修改:gedit ensshRsync.sh,把以下的紅字的部份改為適合自己的參數
#
本地端要備份的目錄
backuplist="/var/www /srv/ftp"
#
遠端備份主機的IP OR DomainName
remote="192.168.1.2"
#
備份的目錄名稱
remoteDIR="/root/backupFTP3"
#
頻寬設定
limit=5000
......................................
 
執行這個shell程式,就可以以無須密碼的方式以rsync + ssh 進行遠端備份的工作,並建立一個名為getMyBackup.sh,取回遠端備份的指令
當然,你也可以使用任何可以透過 22port 的連線軟體,來取回你的資料,如使用跨平台的FileZilla使用sftp來登入並取回


Windows使用 ssh+rsync 的備份方法

備份windows端的資料,可以備份到linux系統的某user的目錄下,因為資料沒有uid/gid的問題
 
安裝cygwinrsync ssh cron 選起來安裝



執行ssh-keygen.exe
ssh -l user serverIP ‘mkdir .ssh backup’ (
登入遠端,並建立backup.ssh目錄)
cat  ~/.ssh/id_rsa.pub | ssh -l user  serverIP "cat - >> ~/.ssh/authorized_keys"
rsync -av --delete --rsh=ssh --stats /cygdrive/c/Users/Administrator/Vid
os user@ServerIP:/home/user/backup/



注意:cygwinAdministratorwindowsAdministrator是不同的人,一個是在/home/Administrator下,一個在c:\Users\Administrator(Win7),對cygwin而言,c:\就等於/cygdrive/c,所以要備份c:\Users\Administrator的資料,在cygwin下要寫成/cygdrive/c/Users/Administrator

安裝madedit
http://sourceforge.net/projects/madedit/

下載ensshrsync.ssh,並以madedit編輯(不可以使用wordpad編輯,因為斷行的符號不同)
#!/bin/bash
#Author: kawsing
#Date:2011/05/17
#
本地端要備份的目錄
backuplist="/cygdrive/c/Users/Administrator/Videos/  
資料夾1  資料夾2"
#
遠端備份主機的IP OR DomainName
remote="
遠端主機"
#
備份的目錄名稱
remoteDIR="/home/user/backupmyWIN7DATA"
#
頻寬設定
limit=5000
..........................................................
..........................................................

設定cron

cron-config
Enter the value of CYGWIN for the daemon: [ ]ntsec
Do you want the cron daemon to run as yourself? (yes/no)yes
Please enter the password for user 'Administrator':(
輸入此使用者的Windows密碼)
Reenter:(
再次輸入密碼)
Running cron_diagnose ...
WARNING: You do not currently have a crontab file.
... no problem found.
Do you want to start the cron daemon as a service now? (yes/no) yes

crontab.exe -e
:wq!
寫好的檔案會存在c:\cygwin\var\cron\tabs你可以使用madedit編輯

./getMyBackuo.sh,
檔案會被還原到c:\cygwin\home\Administrator
你也可以透過FileZillawinscp等軟體,以22 port連上主機,取回個人資料

cygwin
服務的啟動與關閉
cygrunsrv -S cron
cygrunsrv -E cron



Android手機也來囉
Android的手機上,去Market,下載安裝 rsync backup for Android,也可以使用此方法來進行備份,相當有趣



TWubuntu_miniserverV2的重要更新

在miniserver第1版,已經將所有的伺服器以shell程式來做簡單設置,但都針對單一服務進行,會有重複行的資料填寫,所以,最近使用了tcl/tk的語法,設計了圖形的整合設定介面,並與nm-connection-editor搭配,可以更快完成相關服務與防火牆設置,減少重複設定資料的填寫,預計於6/3前釋出miniserverV2
此程式也針對第1版做了安裝的工具,到時也一併釋出

2011年3月24日 星期四

firefox4在ubuntu中,如何使用webgl功能

https://demos.mozilla.org/zh-TW/中,有一些有趣的demo頁面,其中有些會用到webgl技術,第一次進去時說我的firefox4不支援 webgl,查了一下google,找到了解決方案,而且也不難,哈哈!webgl GO!!!
sudo apt-get install libosmesa6
安裝好後,到firefox輸入about:config
輸入webgl的過慮條件,找到webgl.osmesalib,修改他,加入/usr/lib/libOSMesa.so.6

關掉firefox重開,就可以使用webgl了

2011年3月23日 星期三

firefox4來啦!

sudo add-apt-repository ppa:mozillateam/firefox-stable
sudo apt-get update
sudo apt-get install firefox ubufox
然後,到
http://releases.mozilla.org/pub/mozilla.org/firefox/releases/4.0/linux-i686/xpi/
安裝 zh-TW.xpi,就有中文介面了!
這樣,就安裝好啦!

2011年3月14日 星期一

與windows的互動-synergy與quicksynergy

synergy是一個跨平台、opensource的軟體kvm,之前有介紹了linux系統間的使用,這次則把情況設為一台linux(操控端,分享鍵盤與滑鼠),一台widows(client端,使用linux分享的鍵盤與滑鼠)
linux端的安裝:
sudo apt-get install synergy quicksynergy
執行quicksynergy
Server端設定很簡單,只要指定要操控的screen name即可
wondows端
下載並安裝synergy for widnows的版本
執行並設定windows的 screen name
勾選為client端,並設定linux端的IP,如此,linux端的滑鼠跟鍵盤就能操控這台windows電腦了


2011年3月13日 星期日

TWubuntu live系列發佈

由於縣市合併的事情,使得手邊關於linux系統的工作不斷延遲,不過並沒有中斷,還是利用了些時間收攏之前的研究成果
另外,此次也辦了TWubuntu_miniserver的基本伺服器架設研習,也寫了一份文件,有興趣的朋友可以參考看看
文件:
目前已知錯誤:linux-xxxxx-pae 要改成 linux-xxxxx-generic-pae


TWubuntu_advance->以原始ubuntu的桌面為基礎,包含眾多常用的軟體都已經內建,屬包山包海型,但硬體的需求較高,適合新手使用

TWubuntu_xbmc->特殊用途,開機後,立刻成為一多媒體中心系統

TWubuntu_miniserver->使用特製的輕巧桌面環境,包含常用的伺服器軟體,如apache2,vsftp, samba, postfix,nfs,nis,iscsi,bind9,upnp...等(你可以發現,此輕巧桌面,開機後指使用了80M的記憶體)


TWubuntu_Vbox(VirtualBox) ->主機虛擬與集中化,服務分散化
一台主機,以VirtualBox安裝多台VM(miniserver,OB2D...)當Server,各自提供服務,一台當多台用,根據測試,miniserver與OB2D都只要512MB的記憶體,就可以跑的很順暢了
可使用phpVirtualBox這個Web介面工具遠端管理所有的VM



以上系統(Vbox版除外)都可以架設無碟環境
client端以網路開機,可以看到選單
多摩市中心的電腦教室實測(以一台學生機做SERVER,同時開啟30台左右)


同時開啟HD影片播放測試




相關的文件,目前都還在努力中(實在很忙),會慢慢的補上

2010年8月16日 星期一

上課的講義

暑假期間上課的講義,包括
ubuntu 快速上手
windows可攜軟體的管理與應用
jQuery 快速入門
請到 http://sys.tnc.edu.tw/jq_webos (小弟用jQuery做的Web桌面)桌面的『檔案室』中看看
可以轉載,註明出處即可。

blender:修改器Modifiers

  使用Modifiers:Array做出以下效果 plain axes(平面軸) \ Bevel(斜角) boolean