您好,登錄后才能下訂單哦!
這篇文章主要講解了“linux下rsync的安裝和配置”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“linux下rsync的安裝和配置”吧!
Redhat中安裝rsync
1、 首先在服務端和客戶端都安裝rsync,我的RHEL5默認已經安裝好了。在安裝RedHat5的時候,可以在軟件定制中的“基本系統”——》“基本”的“可選的軟件包”中看見:rsync-2.6.8是默認選擇安裝的
2、 也可以通過命令行檢查是否安裝:
或者:rpm –q rsync
3、 如果在開始安裝RedHat的時候,使用默認選擇的rysnc軟件,但現在想用更高版本的rsync,可以卸載掉rysnc,再安裝更高版本的軟件:
4、 卸載完2.6.8版本的rysnc,下面來安裝更高版本的rsync(3.0.9):
配置rsync服務器端
5、 修改rsync的配置文件
可以看到rysnc服務是關閉的(disable = yes),這里把它開啟,把disable的值改為no
6、 創建rsync服務器配置文件/etc/rsyncd.conf
[root@hyj etc]# vim /etc/rsyncd.conf uid = root gid = root port = 873 # 指定運行端口,默認是873,您可以自己指定 hosts allow = 192.168.0.204, 192.168.1.205 # 允許訪問的客戶機 #hosts deny = 0.0.0.0/32 #拒絕訪問的 use chroot = max connections = timeout= ## 下面這些綠色文件是安裝完RSYNC服務后自動生成的文件,當然也可以手動配置到指定路徑 pid file = /var/run/rsyncd.pid ##pid文件的存放 lock file = /var/run/rsync.lock ##鎖文件的存放位置 log file = /var/log/rsyncd.log ##日志記錄文件的存放 #motd file = /etc/rsyncd.motd #歡迎 ## 上面這段是全局配置,下面的模塊可以有 [test] ## 模塊名字,自己命名 path = /home/hyj/workspace/test #指定文件目錄所在位置,這是必須指定 comment = rsync files ## 注釋 ignore errors ##忽略IO read only = yes list = no ## 是否把rsync 服務器上提供同步數據的目錄顯示 ## 下面這一行,同步驗證時用的賬號,如果沒有這項就是匿名同步,client同步時不用用戶名也能同步。 auth users = rsync secrets file = /etc/rsync.passwd ## 指定認證文件
7、 然后創建認證文件:
[root@hyj etc]# vim /etc/rsync.passwd
rsync:hyl ## 用戶名:密碼。注意這個不是系統用戶,只是rsync用戶。
所以不用useradd。
(名字隨便寫,只要和上邊配置文件里的“auth users”參數一致即可),格式(一行一個用戶)
賬號:密碼
(2)、把密碼文件的權限改成600
[root@hyj etc]# chmod 600 /etc/rsync.passwd ## 只能所有者可讀,否則報錯
8、 如果在配置文件中指定了歡迎信息,在/etc下創建rsyncd.motd,設置歡迎信息:
[root@hyj etc]# vim /etc/rsyncd.motd
Welcome the rsync services!
啟動rsyn
9、 在啟動之前,可以先看一下rsync是否已經啟動運行:用lsof或者nestat都可以
根據輸出顯示state為LISTEN,表示為等待接受鏈接的狀態,說明rsync已經啟動。
現在先kill掉rsync進程,kill之前為上圖,kill之后,再次執行netstat –anp|grep 873或者lsof –i:873,結果為空:
10、 防火墻設置:
如果服務器上裝有防火墻,需在服務器中設置iptables將837端口開放。
[root@hyj ~]# iptables -A INPUT -p tcp --dport 873 -j ACCEPT
11、 如果rsync進程沒有運行,在server端將rsync啟動:
(1)、啟動rsync服務端(以守護進程形式,獨立啟動)
#/usr/bin/rsync –daemon
說明啟動成功。
(切記:命令行啟動的最后是daemon,而不是deamon,否則回報如下錯誤:
rsync: --deamon: unknown option
rsync error: syntax or usage error (code 1) at main.c(1231) [client=2.6.8])
(2)、啟動rsync服務端 (以xinetd超級進程啟動)
# /etc/rc.d/init.d/xinetd reload(reload是網上的說法,但是我試了一下報錯,start可以)
或者:/etc/rc.d/init.d/xinetd reload(reload是網上的說法,但是我試了一下報錯,start可以)
演示:
12、 設置自動啟動:
本機安裝的Redhat中rsync已經是開機自動啟動的,網上說的那兩種方法,配置文件中都沒有找到相應的配置,通過用chkconfig 命令查看和修改開機啟動服務.
[root@hyj ~]# chkconfig
(結果部分省略),可以看出rsync處于on的狀態。
配置rsync客戶端
13、用安裝服務器端的方式安裝rsync。
14、啟動rsync,如果報如下錯誤,是因為在etc下沒有rsyncd.conf配置文件:
15、[root@hyj etc]# vi /etc/rsyncd.conf
文件內容為空就行。然后啟動rsync,可以啟動:
命令和實例
16、Rsync的命令格式可以為以下六種:
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]
17、常用為以下兩種:
(4)、rsync [OPTION]... [USER@]HOST::SRC DEST
從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啟動該模式。
如:rsync -av root@172.16.78.192::www /databack
(5)、rsync [OPTION]... SRC [USER@]HOST::DEST
從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啟動該模式。
如:rsync -av /databack root@172.16.78.192::www
18、下面為實例:
服務器ip為192.168.8.126,客戶端ip為192.168.8.122
19、 (1)、把服務器上的/home/hyj/workspace/test文件夾中的內容備份到客戶端的/usr/local/share/rsync_backup中:
[root@hyj ~]# /usr/bin/rsync -vzrtopg --delete --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup
/etc/rsyncd.conf中模塊的內容:
path = /home/hyj/workspace/test comment = rsync files ignore errors read only = yes list = no auth users = rsync secrets file = /etc/rsync.passwd
上面這個命令行中-vzrtopg里的v是verbose,z是壓縮,r是recursive,topg都是保持文件原有屬性如屬主、時間的參數(也可以用直接用a來代替rtopg, a為 --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD)。--progress是指顯示出詳細的進度情況,--delete是指如果服務器端刪除了這一文件,那么客戶端也相應把文件刪除,保持真正的一致。
(2)、上面的命令需要在備份的時候需要輸入密碼,可以在客戶端建立一個密碼文件,在命令中把密碼文件作為參數帶入:
[root@hyj rsync_backup]# vim /etc/rsync.pass
密碼文件中不用輸入用戶名,只需輸入密碼即可:
這份密碼文件權限屬性要設得只有root可讀,不然會報錯,修改屬性:
[root@hyj rsync_backup]# chmod 600 /etc/rsync.pass,
用下面這條命令,可以不輸入密碼:
/usr/bin/rsync -vzrtopg --delete --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass
20、 帶exclude 參數:
把服務器上的/home/hyj/workspace/test文件夾中的內容備份到客戶端的/usr/local/share/rsync_backup中,但不包括:res目錄和default.properties文件:
/usr/bin/rsync -vzrtopg --delete --exclude "res/" --exclude "default.properties" --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass
exclude/include規則實例
Here are some exclude/include examples: --exclude "*.o" would exclude all filenames matching *.o --exclude "/foo" would exclude a file in the base directory called foo --exclude "foo/" would exclude any directory called foo. --exclude "/foobar" would exclude any file called bar two or more levels below a base directory called foo. --include "*/" --include "*.c" --exclude "*" would include all directories and C source files --include "foo/" --include "foo/bar.c" --exclude "*" would include only foo/bar.c (the foo/ directory must be explicitly included or it would be excluded by the "*")
21、 把客戶端上的/home/hyj/vitest文件夾中的內容備份到服務器的/usr/local/share/rsync_backup中,在客戶端執行如下命令:
/usr/bin/rsync -vzrtopg --delete --progress /home/hyj/vitest rsync@192.168.8.126::clientdata --password-file=/etc/rsync.pass
此時服務器的配置文件/etc/rsyncd.conf內容為:
uid = root gid = root hosts allow = 192.168.8.122, 192.168.8.123 #hosts deny = 0.0.0.0/32 use chroot = no max connections = 10 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log timeout=600 [test] path = /home/hyj/workspace/test comment = rsync files ignore errors read only = yes list = no auth users = rsync secrets file = /etc/rsync.passwd # 上面的命令中,客戶端的數據備份到clientdata模塊中,備份到/usr/local/share/rsync_backup文件夾下,read only改為no,# # 否則會報ERROR: module is read only的錯誤 [clientdata] path = /usr/local/share/rsync_backup comment = rsync files ignore errors read only = no list = no auth users = rsync secrets file = /etc/rsync.passwd
定時計劃備份
22、 如果執行crontab命令提示:
說明還沒有為root這個賬號提供crontab。執行crontab –e 創建一個crontab:
23、 編輯crontab,每兩分鐘備份一次:
24、 兩分鐘后,查看,數據已經備份:
25、 每天上午9點20執行rysnc備份任務:
20 9 * * * /usr/bin/rsync -vzrtopg --delete --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass
26、附時間設置:
(1)、查看當前時區 : date -R
(2)、查看時間和日期:date
(3)、設置時間和日期:
將系統日期設定成2012年8月4日的命令:date -s 08/04/2012
將系統時間設定成下午9點20分0秒的命令:date -s 09:20:00
(4)、將當前時間和日期寫入BIOS,避免重啟后失效:hwclock -w
FAQ
27、我需要在防火墻上開放哪些端口以適應rsync?
A:視情況而定
rsync可以直接通過873端口的tcp連接傳文件,也可以通過22端口的ssh來進行文件傳遞,但你也可以通過下列命令改變它的端口:
rsync --port 8730 otherhost::
或者
rsync -e 'ssh -p 2002' otherhost:
28、 我如何通過rsync只復制目錄結構,忽略掉文件呢?
A:rsync -av --include '*/' --exclude '*' source-dir dest-dir
常見錯誤
29、rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
解決:對方沒開機、防火墻阻擋、通過的網絡上有防火墻阻擋,都有可能。關閉防火墻,其實就是把tcp udp 的873端口打開:
解決辦法:打開服務器873端口(RH-Firewall-1-INPUT為REHL 5自帶的鏈名,10為最后一條默認規則(拒絕所以),根據實際情況修改這兩個參數。另外“-m state --state NEW -m tcp”參數不加也行)
#iptables -I RH-Firewall-1-INPUT 10 -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
#iptables -I RH-Firewall-1-INPUT 10 -p udp -m state --state NEW -m udp --dport 873 -j ACCEPT
打開端口之前的iptables配置:
注:最后一條規則(REJECT all -- anywhere anywhere reject-with icmp-host-prohibited)表示拒絕所有的數據包,并向對方回應icmp-host- prohibited數據包。
本機測試通過的方法,打開服務器873端口:
(1)、[root@duoduo ~]# iptables -I INPUT -p tcp --dport 873 -j
[root@duoduo ~]# iptables -I INPUT -p udp --dport 873 -j ACCEPT
(注意要用-I,而不能用-A,用A的話會添加這條規則到iptables鏈的最后,但是沒有到這條規則就被原來的最后一條REJECT了,客戶端還是無法執行rysnc備份,用I的話會插入到鏈的最前面,經過測試可以正常執行rysnc備份。另外“-m state --state NEW -m tcp”參數可以加上)。
(2)、上面提到的,插入規則到最后一條的前面:
#iptables -I RH-Firewall-1-INPUT 10 -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
#iptables -I RH-Firewall-1-INPUT 10 -p udp -m state --state NEW -m udp --dport 873 -j ACCEPT
插入之前:
插入規則:
插入規則后:
再在客戶端執行,可以正常執行。
(3)、或者關閉服務器的iptables:service iptables stop
30、password file must not be other-accessible
continuing without password file
Password:
解決:這是因為rsyncd.pwd rsyncd.sec的權限不對,應該設置為600。如:chmod 600 rsyncd.pwd
31、@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
解決:這是因為密碼設置錯了,無法登入成功,檢查一下rsync.pwd,看客服是否匹配。還有服務器端沒啟動rsync 服務也會出現這種情況。
32、@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
解決:這是因為你在 rsync.conf 中設置的 path 路徑不存在,要新建目錄才能開啟同步。
33、[root@hyj rsync_backup]# /usr/bin/rsync -vzrtopg --delete --exclude "res/" --exclude "default.properties" --progress rsync@192.168.8.126::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1516) [Receiver=3.0.9]
原因及解決辦法:
SELinux;(下面這條命令在服務器端執行)
setsebool -P rsync_disable_trans on
34、ERROR: module is read only
rsync: read error: Software caused connection abort (113)
rsync error: error in rsync protocol data stream (code 12) at io.c(769) [sender=3.0.8]
解決:這是因為服務器端配置文件rsyncd.conf中read only = yes,為只讀,即不允許客戶端上傳文件,改成no就可以了。
感謝各位的閱讀,以上就是“linux下rsync的安裝和配置”的內容了,經過本文的學習后,相信大家對linux下rsync的安裝和配置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。