1. 程式人生 > >Linux下檔案同步、備份神器之-------rsync

Linux下檔案同步、備份神器之-------rsync

   對於運維人員,資料備份是日常重要而又必須做的工作,選擇一種好的備份軟體效率會大大提升。rsync 就是一款功能強大,高效,安全,速度快的檔案增量傳輸工具。

   一 、什麼是rync ?

     1. rsync ---- remote synchronize  ,是一款實現遠端同步功能的軟體;

     2. rsync使用“Rsync演算法來同步檔案,該演算法只傳送兩個檔案的不同部分,因此速度相當快;

     3. 同步檔案的同時,可以保持原來檔案的許可權、時間 和目錄結構;

     4. 對於多個檔案來說,內部流水線減少檔案等待的延時;

5. rsync預設監聽TCP 873埠,通過遠端shell如rsh和ssh複製檔案。同時要求必須在遠端和本地系統上都安裝sync.

    二、  Rsync 安裝

1.  下載Rysnc

  目前Llinux各大發行版作業系統都已安裝rsync ,可以通過rysnc --version檢視當前版本,需要安裝最新版本的,可到 rysnc 的官方網站:http://rsync.samba.org/下載最新的版本,編譯安裝。


2.   安裝Rsync

#yum install -y  rsync         ####yum 安裝

編譯安裝:

#wget  https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
#tar -zxvf   rsync-3.1.3.tar.gz
#cd rysnc-3.1.3
#./configure --prefix=/usr/local/rsync

#make && make install

rsync 安裝完成,預設在/usr/local/rsync/bin下,配置後可以備份或者傳輸遠端伺服器資料。

注意:編譯安裝前得先安裝gcc編譯工具。

三、 配置 Rsync

1. 配置檔案

rsync的主要有以下三個配置檔案:

      rsyncd.conf      ----主配置檔案,需要手動生成

      rsyncd.secrets  ----密碼檔案

      rsyncd.motd     ----rysnc伺服器資訊

2.  rsync.conf 配置

例如:我們要備份伺服器上的 /home/backup 目錄,同時要把 /home 下的 file1 和 file2 目錄排除在外

#vim /etc/rsyncd.conf

  rsyncd.conf     (rsync服務的主要配置檔案,它控制rsync服務的各種屬性,下面給出一個
rsyncd.conf檔案的例子:
  1.   #先定義整體變數
  2.   secrets file = /etc/rsyncd.secrets
  3.   motd file = /etc/rsyncd.motd
  4.   read only = yes
  5.   list = yes
  6.   #uid = nobody
  7.   #gid = nobody
  8.     uid = test         #
  9.     gid = test         #
  10.   hosts allow = 172.25.0.110    #哪些電腦可以訪問rsync服務
  11.   hosts deny = 172.25.0.0/24    #哪些電腦不可以訪問rsync服務
  12.   max connections = 2
  13.   log file = /var/log/rsyncd.log
  14.   pid file = /var/run/rsyncd.pid
  15.   lock file = /var/run/rsync.lock
  16.     #再定義要rsync的目錄
  17.   [backup]
  18.   path = /home/backup
  19.     list=yes
  20.     ignore errors
  21.     auth users = test,backup
  22.     comment = This is taranfly's Blog
  23.     exclude = file1/  file2/ 

配置檔案詳細說明:

註釋:

 uid = nobody

進行同步或者備份的使用者,nobody 為任何使用者

gid = nobody 

進行備份的組,nobody為任意組

use chroot = no

如果"use chroot"指定為true,那麼rsync在傳輸檔案以前首先chroot到path引數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要以root許可權,並且不能備份指向外部的符號連線所指向的目錄檔案。預設情況下chroot值為true.但是一般不需要,選擇no或false

list = no

不允許列清單

max connections = 10 

最大連線數

timeout = 600 

覆蓋客戶指定的IP超時時間,也就是說rsync伺服器不會永遠等待一個崩潰的客戶端。

pidfile = /var/run/rsyncd.pid  

pid檔案的存放位置

lock file = /var/run/rsync.lock  

鎖檔案的存放位置

log file = /var/log/rsyncd.log   

日誌檔案的存放位置

[data]  

這裡是認證模組名,即跟samba語法一樣,是對外公佈的名字

path = /home/backup

這裡是參與同步的目錄

ignore errors  

可以忽略一些無關的IO錯誤

read only = no

允許可讀可寫

list = no

不允許列清單

hosts allow = 192.168.1.0/255.255.255.0

這裡可以指定單個IP,也可以指定整個網段,能提高安全性。格式是ip 與ip 之間、ip和網段之間、網段和網段之間要用空格隔開

auth users = test 

認證的使用者名稱

secrets file = /etc/rsyncd.password  

密碼檔案存放地址

*****************************************************************************************************************

注意: 

1、[backup]  認證模組名和 path = /www/backup/ 參與同步的目錄

這裡的path 大家要記好了,這裡不要隨便的一設定就直接完事,要知道這裡是認證模組的,以後從客戶機備份的資料會儲存在這裡。

2、auth users = redhat 認證的使用者名稱 這個名字是伺服器端實實在在存在使用者,大家不要直接跟步驟走卻忽略了這點。如果伺服器端少了這個的話我估計你的資料同步就實現不了,大家要謹記。

*****************************************************************************************************************

3. 定義密碼檔案 :/etc/rsyncd.secrets
1. rsyncd.secrets是儲存rsync服務的使用者名稱和密碼的,它是一個明文的文字檔案,許可權設為600,只有屬主可以讀寫密碼檔案格式為:user:password檔案的屬性必須
#vim /etc/rsyncd.secrets
test:123456

2.  新增屬主和許可權

#chown root:root /etc/rsyncd/rsyncd.secrets
#chmod 600 /etc/rsyncd/rsyncd.secrets
4.  定義 rsyncd.motd 檔案

rsyncd.motd主要定義使用者登入rsync服務的歡迎資訊,可以自己根據需求定義,跟FTP登入介面一樣如:

# vi /etc/rsyncd.motd
*****************************************************  
 Welcome to use the taranfly's rsync services!

*****************************************************

5.  啟動rsync服務
#/usr/bin/rsync  --daemon
#netstat   -lntup |grep  rsync
#ps  -ef |grep rsync |grep -v grep
6.  設定開機自啟動
#echo "/usr/bin/rsync --deamon">>/etc/rc.local
#cat  /etc/rc.local

注: –daemon 是讓rsync 以伺服器模式執行

7.   設定防火牆

預設情況下防火牆一般可以關閉,不然會阻止873埠,導致rsync服務無法起來。

#iptable -L    #檢視873埠是否開啟
#service  iptables stop
若要開啟iptables ,允許873埠訪問如下:
#iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
#iptables -L     #確認873埠是否開啟

四、  rsync 命令格式

rsync 命令格式:
rsync [OPTION]... SRC [SRC]... [[email protected]]HOST:DEST
rsync [OPTION]... [[email protected]]HOST:SRC DEST
sync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... [[email protected]]HOST::SRC [DEST]
rsync [OPTION]... SRC [SRC]... [[email protected]]HOST::DEST
rsync [OPTION]... rsync://[[email protected]]HOST[:PORT]/SRC [DEST]
常用的方式:

1.   備份本地檔案 ==cp
#rsync -avzP   /home  /backup        ==相當於cp     
2.   同步本地到遠端主機

#rsync -avzP /home/backup/  [email protected]:192.168.1.4:/share/rsysnctest/

3.   遠端同步到本地

# rsync -avz [email protected]:192.168.1.4:/share/rsysnctest/ /home/aloft/

4.  找出檔案直接的不同

# rsync -avz [email protected]:192.168.1.4:/share/rsysnctest/ /home/aloft/

5.  與contab 結合,定時備份

建立定時備份任務,A主機上將要備份/home/data 檔案同步到B主機(172.25.0.150) 下/backup目錄。

每天的晚上23:30 執行備份任務 

vim AtoBbacku.sh
#!/bin/bash
rsync -avzP  --delete  --password-file=rsyncd.secrets /home/data  [email protected]50::/backup
chmod 755 AtoBbacku.sh
crontab -e
30 23 * * *   sh -x /AtoBbacku.sh
rsync 常用引數:
-a, --archive 歸檔模式,等於-rlptgoD;   #最常用的  一般直接 -avzP

-r, --recursive 遞迴模式;

-l 保持符號連線;

-p 保持檔案原有許可權;

-t 保持檔案原有修改時間;

-g 保持檔案原有使用者組;

-o 保持檔案原有屬主;

-D -devices -specials,保持塊裝置檔案和特殊檔案;

-I 強制掃描,放棄“quick check”策略(quick check策略,通過檢視檔案的時間戳和檔案大小,先排除一批認為相同的檔案[rsync不會對資料夾本身做“quick check”]);

-z, --compress 壓縮,預設的壓縮演算法和gzip一樣;

-v, --verbose 顯示進度詳細資訊;

-q, --quiet 精簡輸出模式;

-R, --relative 保持全路徑;

--progress  顯示傳輸進度(百分百);  等同於 -P

--delete 本地刪除某一檔案,遠端也同步的刪除該檔案,保持嚴格的一致(不加該引數,則表示只增不減);

--exclude="*.tmp" 排除某些檔案;

--exclude-from=FILE 排除FILE中指定模式的檔案;

--port=PORT 指定其他的rsync服務埠;