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 安裝
編譯安裝:
#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檔案的例子:
- #先定義整體變數
- secrets file = /etc/rsyncd.secrets
- motd file = /etc/rsyncd.motd
- read only = yes
- list = yes
- #uid = nobody
- #gid = nobody
- uid = test #
- gid = test #
- hosts allow = 172.25.0.110 #哪些電腦可以訪問rsync服務
- hosts deny = 172.25.0.0/24 #哪些電腦不可以訪問rsync服務
- max connections = 2
- log file = /var/log/rsyncd.log
- pid file = /var/run/rsyncd.pid
- lock file = /var/run/rsync.lock
- #再定義要rsync的目錄
- [backup]
- path = /home/backup
- list=yes
- ignore errors
- auth users = test,backup
- comment = This is taranfly's Blog
- 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服務埠;