2011年8月10日 星期三

Linux Rsync 排除指令 exclude

Rsync 是很好用的同步備份資料的指令,簡單方便。


想知道其他資訊可以參考鳥哥喔!!!
http://linux.vbird.org/linux_server/0310telnetssh.php#rsync


這次楊大俠測試的環境是三台web server互相備份資料。




一開始有用過Rsync的朋友可以跳過簡單基本的Rsync教學喔。








首先當然先認識一下Rsync。


rsync -av -e ssh  /home/a/www/  /home/b/www/ 


-av -e ssh
我這邊不多說嚕,鳥哥寫得很清楚了(楊大俠懶惰。


主要楊大俠要講的是後面的路徑喔,因為楊大俠第一次看的時候,看得霧煞煞,應該還是有人跟楊大俠一樣吧!!!!!!。


/home/a/  /home/b/


以上就是a 傳送到 b,也可以說成 a 複製到 b。


舉個例子,現在/home/a/底下有aaa這個檔案,/home/b/底下是空的,然後執行上面那條指令,在/home/b/底下就會看到aaa喔。


很簡單吧!!!!


下面是實際的操作喔!!!!






以上是自己對自己喔!!!


如果需要自己對別人呢?


延續上面例子,一樣是/home/a/ 傳送到/home/b,差別就在與是自己的/home/a/  傳送到別人的/home/b。


指令只要加上對方的ip就可以嚕。


rsync -av -e ssh  /home/a/www/  user@x.x.x.x:/home/b/www/ 


實際上就是


rsync -av -e ssh  /home/a/www/  root@192.168.1.1:/home/b/www/ 


執行此指令會需要密碼喔。


以上基本的運用會了,就可以再進階一點嚕,上面內容鳥哥都有喔。




如果可以SSH不用密碼登入,再加上crontab 設定每天執行一次,這樣就可以每天自動備份資料。
對怕資料遺失,以及管理server方便多了。


就開始來看楊大俠的介紹吧!!!!




首先先要讓SSH不用密碼登入。



cd.ssh(若沒有[root@xxx#]mkdir .ssh)

[root@xxx]#cd /root/.ssh
[root@.ssh]#ssh-keygen -d
]root@.ssh]#scp id_dsa.pub X.X.X.X:/root/.ssh/authorized_keys2
[root@.ssh]#ssh root@X.X.X.X

X.X.X.X 是IP address
若成功就不用密碼,就可以進入到另一台主機。


紅色圈圈是enter

藍色圈圈是 root密碼
三角形原本是主機2變成主機1嚕!!!!





再來就是設定crontab


[root@xxx]# crontab –e
####進入到編輯畫面增加下面那行,每天00分執行sync,若要010分,則為10 0 * * * /root/sync


0 0 * * * /root/sync


然後:wq 存檔跳出編輯畫面。








再來就是編寫sync黨,並且變成可執行黨。
[root@xxx~]#cd /root
[root@xxx~]#nano sync2


把之前rsync的指令寫在上面。





[root@xxx~]#chmod 700 sync2
執行sync2,就可以去檢查看看rsync指令是否有成功喔。
[root@xxx~]#./sync2








以上應該不會太難,其實網路上還有其他資訊,東看看西看看,都可以成功。


不過楊大俠這篇想寫的重點就是在同一個目錄底下,若有不需要同步的目錄或資料,該如何處裡,(例如:在/home/A這的資料夾底下有a b c三個檔案,但是我不想要b這個檔案同步。)這在網路的相關資源應該滿少的,我個人認為拉,因為楊大俠需之前在google收尋到的不是很多,所以才寫這篇方便有緣人查詢看到。


在/home/da/新增一個文件 名稱為file
然後把不需要的檔案寫在file上,以剛說的例子,就把b寫入在這文件(file)內。


[root@xxx]# cd /home/da
[root@xxx]# vim file


進入編輯畫面

b
~
~
~


:wq 離開


不好意思,楊大俠在實作的時候沒有存照片,沒辦法貼上來,不過應該不會難道各位先進。


所以不需要同步的檔案或目錄路徑就是/home/da/file



重點來拉!!!就是指令怎麼寫呢?(指令的環境:在/home/A這的資料夾底下有a b c三個檔案,但是我不想要b這個檔案同步。)

rsync -av -e ssh --exclude-from=/home/da/file  /home/A user@x.x.x.x:/home/A


使用排除指令 --exclude-from
只要增加--exclude-from=不需要同步的資料夾所在路徑。

其他都跟上面一樣,很簡單吧!!!!!


所以只需要在sync這個可執行黨內加上排除指令就可大功告成嚕。




任督二脈:
       楊大俠還不知道排除指令的時候,檔案一多一大,可是一行一行慢慢打的,不僅僅麻煩,效能又慢,剛好有找到排除指令的用法,就只有一行,方便多了,感覺我之前打那得多,都是白工作了,而且又是浪費時間。


      在實作測試的時候,楊大俠認為比較麻煩的部分就是SSH的金鑰部分,如果是兩台電腦互相給金鑰,那倒是沒什麼問題,三台電腦可能會有問題,因為楊大俠上面貼的指令,如果三台照作,因為先後的關係,後面的會把前面那組金鑰給覆蓋下去,所以造成先作SSH沒辦法順利不用密碼連線SSH,最後是用vim編輯金鑰,把別人的自己手動copy進去。









參考網站


備份的方法 3 : 使用 rsync


rsync 參數設定及範例


不用密碼直接用SSH登入到遠端電腦


rsync 檔案備份


Rsync + SSH -- 讓 Server 自動異地備援也加密

使用 rsync 做資料同步,並利用 SSH 做安全加密 ( 適用RHEL4、Fedora Core 3、4 及 5 )

沒有留言:

張貼留言