簡易rsync自動備份

回覆文章
布魯斯
Site Admin
文章: 211
註冊時間: 週四 2月 16, 2006 3:34 pm

簡易rsync自動備份

文章 布魯斯 »

備份client端:192.168.0.2,Red Hat 9
上線server端:192.168.0.1,Red Hat 9

1.在備份client端設定單向Trusted SSH Authorized:
首先要 client (192.168.0.2) 要對 server (192.168.0.1) 做異地備援 ...所以我針對 client 讓它使用SSH連到 server 時...不需要輸入密碼...User 是 Root...SSH Version2的版本..首先要先在client(192.168.0.2)產生public/private dsa key pair..

代碼: 選擇全部

[root@backup /]# cd /root/.ssh/ 
[root@backup .ssh]# ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase): <-- 此處不打passphrase..下次才不會詢問password
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66 root@backup
[root@backup .ssh]#


這時會在系統下看到兩個檔案...id_dsa與id_dsa.pub 現在要把id_dsa.pub丟到192.168.0.1 並且更名為 authorized_keys2

代碼: 選擇全部


[root@backup .ssh]# scp id_dsa.pub 192.168.0.1:/root/.ssh/authorized_keys2
root@192.168.0.1's password:
id_dsa.pub 100% |***************************************************************************| 612 00:00
[root@backup .ssh]#


可以執行ssh 192.168.0.1 看看能否登入而不需要輸入密碼

2.設定rsync
rsync特性簡介 :

rsync是unix-like系統下的數據鏡像備份工具,從命名上就可以看出來了remote sync。它的特性如下:

1、可以鏡像保存整個目錄樹和文件系統。
2、可以很容易做到保持原來文件的權限、時間等等。
3、無須特殊權限即可安裝。
4、優化的流程,文件傳輸效率高。
5、可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。
6、支持匿名傳輸。

首先將server(192.168.0.1)的Rsync service 啟動...

代碼: 選擇全部


[root@server /]#chkconfig --list rsync
rsync off
[root@server /]#chkconfig rsync on


然後在backup(192.168.0.2)上建一個 Backup directory...然後對server(192.168.0.1)的mysql跟html的目錄做rsync...,script如下:

代碼: 選擇全部


[root@backup /]# mkdir backup
[root@backup backup]#vi sync

rsync -avlR --delete -e ssh 192.168.0.1:/var/lib/mysql /backup/
rsync -avlR --delete -e ssh 192.168.0.1:/var/www/html /backup/
[root@backup backup]#chmod 700 sync
[root@backup backup]# ./sync

receiving file list ... done

.

.

.

done

wrote 16 bytes  read 107 bytes  82.00 bytes/sec

total size is 0  speedup is 0.00

receiving file list ... done

.

.

.

done

wrote 16 bytes  read 921 bytes  624.67 bytes/sec

total size is 308331  speedup is 329.06

[root@backup backup]#



參數意義如下﹕

-a, --archive
It is a quick way of saying you want recursion and want to preserve almost everything.
-v, --verbose
This option increases the amount of information you are given during the transfer.
-l, --links
When symlinks are encountered, recreate the symlink on the destination.
-R, --relative
Use relative paths. 保留相對路徑...才不會讓子目錄跟 parent 擠在同一層...
--delete
是指如果Server端刪除了一文件,那客戶端也相應把這一文件刪除,保持真正的一致。
-e ssh
建立起加密的連接。

3.用crontab定時備份,設定每天凌晨一時開始備份

代碼: 選擇全部


[root@backup backup]# crontab -e
0 1 * * * /backup/sync


第一次備份時,整個目錄複製耗時教久,之後就只會針對檔案中有變化的部份做備份了。
布魯斯
Site Admin
文章: 211
註冊時間: 週四 2月 16, 2006 3:34 pm

文章 布魯斯 »

以上的方式是由備份端做client,如果反過來,就是由server端傳檔案至client端亦可

做法大同小異,較大不同的是rsync的語法,範例如下:
在server端192.168.0.1
rsync -azv -e ssh /var/lib/mysql/* 192.168.0.2:/backup
回覆文章