RSYNC安裝使用詳解
http://www.cn029.com/article/107/126/2008/20080427116767.html
RSYNC軟體介紹:
rsync是類unix系統下的資料鏡像備份工具,從軟體的命名上就可以看出來了——remote sync。它的特性如下:
可以鏡像儲存整個分類樹和檔案系統。
可以很容易做到保持原來檔案的許可權、時間、軟永久連結等等。
無須特殊許可權即可安裝。
最佳化的流程,檔案傳輸效率高。
可以使用rcp、ssh等方式來傳輸檔案,當然也可以通過直接的socket串連。
支援匿名傳輸,以方便進行網站鏡象。
軟體下載
rysnc的首頁地址為:
http://rsync.samba.org/
目前最新版本為2.4.6。可以選擇從原始網站下載:
http://rsync.samba.org/ftp/rsync/
。也可以選擇從本站下載:rsync 2.4.6
一、下載、安裝rsync
#tar zxvf rsync-2.6.9.tar.gz
#cd rsync-2.6.9
#./configure --prefix=/usr/local/rsync
#make
#make install
**** 正常安裝RH的時候是帶RSYNC的,運行檔案放在/usr/bin/rsync
二、配置rsync server
1、啟動RSYNC
#vi /etc/xinetd.d/rsync
把原來的YES改成NO
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
隨系統啟動RSYNC
#chkconfig rsync on
2、配置/etc/rsyncd.conf(需要手動產生)
rsyncd.conf的參數寫在上邊就是全域參數和寫在模組裡的就是模組參數
#vi /etc/rsyncd.conf
全域參數
uid = root //運行RSYNC守護進程的使用者
gid = root //運行RSYNC守護進程的組
use chroot = no //不使用chroot
max connections = 4 // 最大串連數為4
strict modes =yes //是否檢查口令檔案的許可權
port = 873 //預設連接埠873
模組參數
[backup] //這裡是認證的模組名,在client端需要指定
path = /home/backup/ //需要做鏡像的目錄,不可缺少!
comment = This is a test //這個模組的注釋資訊
ignore errors //可以忽略一些無關的IO錯誤
read only = yes // 唯讀
list = no //不允許列檔案
auth users = hening //認證的使用者名稱,如果沒有這行則表明是匿名,此使用者與系統無關
secrets file = /etc/rsync.pas //密碼和使用者名稱對比表,密碼檔案自己產生
hosts allow = 192.168.1.1,10.10.10.10 //允許主機
hosts deny = 0.0.0.0/0 //禁止主機
#transfer logging = yes
注釋:下面這些綠色檔案是安裝完RSYNC服務後自動產生的檔案
pid file = /var/run/rsyncd.pid //pid檔案的存放位置
lock file = /var/run/rsync.lock //鎖檔案的存放位置
log file = /var/log/rsyncd.log //日誌記錄檔案的存放位置
3、配置rsync密碼(在上邊的設定檔中已經寫好路徑) /etc/rsync.pas(名字隨便寫,只要和上邊設定檔裡的一致即可),格式(一行一個使用者)
帳號:密碼
#vi /etc/rsync.pas
例子:
Hening:111111
許可權:因為rsync.pas儲存了rsync服務的使用者名稱和密碼,所以非常重要。要將rsync.pas設定為root擁有, 且許可權為600。
#cd /etc
#chown root.root rsync.pas
#chmod 600 rsync.pas
3.rsyncd.motd(配置歡迎資訊,可有可無)
# vi /etc/rsyncd.motd
rsyncd.motd記錄了rsync服務的歡迎資訊,你可以在其中輸入任何文本資訊,如:
Welcome to use the rsync services!
4、讓配置生效
#service xinetd restart
三、啟動rsync server
RSYNC服務端啟動的兩種方法
1、啟動rsync服務端(獨立啟動)
#/usr/bin/rsync –daemon
2、啟動rsync服務端 (有xinetd超級進程啟動)
# /etc/rc.d/init.d/xinetd reload
四:加入rc.local
在各種作業系統中,rc檔案存放位置不盡相同,可以修改使系統啟動時把rsync --daemon載入進去。
#vi /etc/rc.local
加入一行/usr/local/rsync –daemon
五.檢查rsync
#netstat -a | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
六.配置rsync client
1、設定密碼
#vi /etc/rsync.pas
111111
修改許可權
#cd /etc
#chown root.root rsync.pas
#chmod 600 rsync.pas
2、client串連SERVER
從SERVER端取檔案
/usr/bin/rsync -vzrtopg --progress --delete hening@192.168.0.217::backup /home/backup --password-file=/etc/rsync.pas
向SERVER端上傳檔案
/usr/bin/rsync -vzrtopg --progress --password-file=/root/rsync.pas /home/backup hening@192.168.0.217::backup
這個命令將把本地機器/home/backup目錄下的所有檔案(含子目錄)全部備份到RSYNC SERVER(172.20.0.6)的backup模組的設定的備份目錄下。
請注意如果路徑結束後面帶有"/",表示備份該目錄下的東東,但不會建立該目錄,如不帶"/"則建立該目錄。
RSYNC用法:
rsync [OPTION]... [USER@]HOST::SRC [DEST] #從RSYNC SERVER備份檔案到本地機器
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST #從本地機器備份檔案到RSYNC SERVER
3、自動運行
1)vi /usr/local/rsync/time.sh //製作指令檔
把下邊的內容複寫進去
#!/bin/bash
/usr/bin/rsync -vzrtopg --progress --delete hening@192.168.0.217::backup /home/backup --password-file=/etc/rsync.pass
2) crontab -e
加入55 * * * * /usr/local/rsync/time.sh //每55分運行一次time.sh指令檔
五 iptables
iptables -A INPUT -p tcp -s ! 11.22.33.44 --dport 873 -j DROP
如此, 只有 11.22.33.44 這個 client IP 能進入這台 rsync server.
命令介紹:-rvlHpogDtS
rsync命令參數
-v表示verbose詳細顯示
-z表示壓縮
-r表示recursive遞迴
-t表示保持原檔案建立時間
-o表示保持原檔案屬主
-p表示保持原檔案的參數
-g表示保持原檔案的所屬組
-a存檔模式
-P表示代替-partial和-progress兩者的選項功能
-e ssh建立起加密的串連。
--partial阻止rsync在傳輸中斷時刪除已拷貝的部分(如果在拷貝檔案的過程中,傳輸被中斷,rsync的預設操作是撤消前操作,即從目標機上
刪除已拷貝的部分檔案。)
--progress是指顯示出詳細的進度情況
--delete是指如果伺服器端刪除了這一檔案,那麼用戶端也相應把檔案刪除,保持真正的一致。
--exclude不包含/ins目錄
--size-only 這個參數用在兩個檔案夾中的差別僅是源檔案夾中有一些新檔案,不存在重名且被修改過的檔案,因為這種檔案有可能會因為內容被修改可大小一樣,而被略過。這個參數可以大大地提高同步的效率,因為它不需要檢查同名檔案的內容是否相同。
--password-file來指定密碼檔案,內容包含server端指定認證使用者的密碼。
這樣就可以在指令碼中使用而無需互動式地輸入驗證密碼了,這裡需要注意的是這份密碼檔案許可權屬性要設得只有屬主可讀。
hening@192.168.0.217::backup
hening是指server端指定認證的使用者
192.168.0.217是指伺服器端的ip
::backup 表示伺服器端需要同步的模組名稱;
/home/quack/backup/$DATE是同步後的檔案指存放在原生目錄位址。
/var/log/rsync.$DATE是同步後的記錄檔存放在原生目錄位址。
注意
不放/ 則目錄名也包含mirror,放 / 則只有目錄裡面的東西mirror了