76.rsync同步工具介紹與使用

rsync同步工具介紹與使用

rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。 rsync是一個功能非常強大的工具,其命令也有很多功能特色選項。

命令語法格式(6種):

rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]host:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

語法格式說明:

1、拷貝本地文件。當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啓動這種工作模式。如:rsync -a /etc/passwd /tmp/passwd_bak
2、使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔符時啓動該模式。如:rsync -av /etc/passwd 192.168.204.129:/tmp/passwd_bak
3、使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔符時啓動該模式。如:rsync -av 192.168.204.129:/tmp/passwd_bak /etc/passwd
4、從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啓動該模式。如:rsync -av [email protected]::test /etc/passwd
5、從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啓動該模式。如:rsync -av /etc/passwd [email protected]::test tmp/passwd_bak
6、列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。如:rsync -v rsync://192.168.78.192/www

常用選項:

-a :包含-rtplgoD,a選項後面可以跟--no-OPTION這個表示關閉-rlptgoD中的某一個例如 -a--no-l 等同於-rptgoD
-r :同步目錄時要加上,類似cp時的-r選項
-v :同步時顯示-些信息,讓我們知道同步的過程
-l :保留軟連接
-L :加上該選項後,同步軟連接時會把源文件給同步
-p :保持文件的權限屬性
-o :保持文件的屬主
-g :保持文件的屬組
-D :保持設備文件信息
-t :保持文件的時間屬性
--delete :刪除DEST中SRC沒有的文件
--exclude :過濾指定文件,如--exclude “logs”會把文件名含logs的文件或者目錄過濾掉,不同步
-P :顯示同步過程,比如速率,比-v更加詳細
-u :加上該選項後,如果DEST中的文件比SRC新,則不同步
-z :傳輸時壓縮

實例

SSH方式

首先在服務端啓動ssh服務:

service sshd start
啓動 sshd: [確定]
使用rsync進行同步

接下來就可以在客戶端使用rsync命令來備份服務端上的數據了,SSH方式是通過系統用戶來進行備份的,如下:

rsync -vzrtopg --progress -e ssh --delete [email protected]:/www/* /databack/experiment/rsync
[email protected]'s password:
receiving file list ...
5 files to consider
test/
a
0 100% 0.00kB/s 527:35:41 (1, 20.0% of 5)
b
67 100% 65.43kB/s 0:00:00 (2, 40.0% of 5)
c
0 100% 0.00kB/s 527:35:41 (3, 60.0% of 5)
dd
100663296 100% 42.22MB/s 0:00:02 (4, 80.0% of 5)
sent 96 bytes received 98190 bytes 11563.06 bytes/sec
total size is 100663363 speedup is 1024.19
上面的信息描述了整個的備份過程,以及總共備份數據的大小。

後臺服務方式

啓動rsync服務,編輯/etc/xinetd.d/rsync文件,將其中的disable=yes改爲disable=no,並重啓xinetd服務,如下:


vi /etc/xinetd.d/rsync

#default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync {
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
/etc/init.d/xinetd restart
停止 xinetd: [確定]
啓動 xinetd: [確定]
創建配置文件,默認安裝好rsync程序後,並不會自動創建rsync的主配置文件,需要手工來創建,其主配置文件爲“/etc/rsyncd.conf”,創建該文件並插入如下內容:

vi /etc/rsyncd.conf

uid=root
gid=root
max connections=4
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsyncd.passwd
hosts deny=172.16.78.0/22

[www]
comment= backup web
path=/www
read only = no
exclude=test
auth users=work
創建密碼文件,採用這種方式不能使用系統用戶對客戶端進行認證,所以需要創建一個密碼文件,其格式爲“username:password”,用戶名可以和密碼可以隨便定義,最好不要和系統帳戶一致,同時要把創建的密碼文件權限設置爲600,這在前面的模塊參數做了詳細介紹。

echo "work:abc123" > /etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd
備份,完成以上工作,現在就可以對數據進行備份了,如下:

rsync -avz --progress --delete [email protected]::www /databack/experiment/rsync

Password:
receiving file list ...
6 files to consider
./ files...
a
0 100% 0.00kB/s 528:20:41 (1, 50.0% of 6)
b
67 100% 65.43kB/s 0:00:00 (2, 66.7% of 6)
c
0 100% 0.00kB/s 528:20:41 (3, 83.3% of 6)
dd
100663296 100% 37.49MB/s 0:00:02 (4, 100.0% of 6)
sent 172 bytes received 98276 bytes 17899.64 bytes/sec
total size is 150995011 speedup is 1533.75
恢復,當服務器的數據出現問題時,那麼這時就需要通過客戶端的數據對服務端進行恢復,但前提是服務端允許客戶端有寫入權限,否則也不能在客戶端直接對服務端進行恢復,使用rsync對數據進行恢復的方法如下:

rsync -avz --progress /databack/experiment/rsync/ [email protected]::www

Password:
building file list ...
6 files to consider
./
a
b
67 100% 0.00kB/s 0:00:00 (2, 66.7% of 6)
c
sent 258 bytes received 76 bytes 95.43 bytes/sec
total size is 150995011 speedup is 452080.87
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章