1、rsync 通過 ssh 方式同步
現在打開兩個PuTTY窗口,001機器的見下圖,
02機器見下圖,
兩個的IP地址是不一樣的,001機器的IP地址是 192.168.218.128,02機器的IP地址是 192.168.218.130。
現在在001機器上操作,見下圖,
顯示未找到命令,默認系統中是沒有rsync命令,現在需要在02機器上安裝rsync命令,輸入命令 yum install -y rsync,回車,見下圖,
接着回到001機器,重新操作,通過ssh同步,輸入命令 rsync -av /etc/passwd 192.168.218.130:/tmp/lys.txt ,回車,見下圖,
可以看到文件同步的過程。接着來查看一下文件,輸入命令 cat /tmp/lys.txt 回車,見下圖,
也可以反過來操作,輸入命令 rsync -avP 192.168.218.130:/tmp/lys.txt /tmp/123.txt,回車,見下圖,
以上操作叫拉文件,再上面的操作叫推文件。兩個操作都需要輸入密碼,並且都知道端口是 22,如果不知道對方的端口的話,就需要指定端口,加上-e選項,輸入命令 rsync -avP -e "ssh -p 22" /etc/passwd 192.168.218.130:/tmp/lys.txt ,回車,見下圖,
指定 22 端口,就會連上對方的 22 端口。注意 -e 後面的“ssh -p 22”是一個命令,這個命令可以單獨操作的 ,輸入命令 ssh -p 22 192.168.218.130,回車,見下圖,
可以發現,輸入密碼之後,就連接上02機器了,接着按住 ctrl+d 登出。
2、rsync 通過服務同步
這邊需要先開啓服務,編輯配置文件,輸入命令 vi /etc/rsyncd.conf,回車,見下圖,
默認是有內容的,但前面都有一個#號,被註釋掉了。現在直接另起一行,將下面的內容複製粘貼上去,再保存並退出即可。
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.218.128
[test]
path=/tmp/rsync
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth user=test
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.218.130
見下圖,
稍後再解釋上面內容的含義,先接着往下操作,啓動服務,輸入命令 rsync--daemon,回車,見下圖,
接着使用命令 ps aux |grep rsync,來檢測一下服務是否啓動,見下圖,
可以看到服務啓動了,接着使用命令 netstat -lntp 查看服務端口,如上圖第三個紅色框框內容所示。
接着創建文件 /tmp/rsync,並授權 777,方便我們測試,見下圖,
然後先在02機器上,同步一個文件,輸入命令 rsync -avP /tmp/lys.txt 192.168.218.128::test/lys-02.txt,回車,見下圖,
出現報錯,先檢測網絡,發現沒有問題,接着檢查端口,未找到命令,輸入命令 yum install -y telnet,回車,安裝命令,見下圖,
telnet 192.168.218.128 873,命令是檢測端口是否接通,見下圖,
結果顯示,端口是不通的,這時候需要檢查一下是否是 iptables 的問題,輸入命令 iptables -v
L,回車,見下圖,
可以看出,就是 iptables 的問題,要把 firewalld 服務停止,見下圖,
可以看到,iptables 上的規則沒有了,001機器上也要檢查一下,見下圖,
001機器上的 firewalld 服務也關閉掉了。然後回到02機器,輸入命令 telnet 192.168.218.128 873,回車,見下圖,
這樣子就是沒問題的,退出輸入 telnet> quit 或是直接回車,就可以退出來。
接着運行剛纔的命令 rsync -avP /tmp/lys.txt 192.168.218.128::test/lys-02.txt,回車,見下圖,
這樣顯示就是成功了。命令中含有兩個冒號 :: 的,就是使用 rsyncd.conf 。接着在001機器上檢查一下,見下圖,
可以看到 lys-02.txt 這個文件,說明同步成功了。
回到02機器上,再把這個文件拉回來,也是可以的,見下圖,
接下來,輸入命令 cat /etc/rsyncd.conf,回車,查看配置文件,見下圖,
上圖紅色框框的內容,具體含義見下圖,
port 默認端口是873,也可以更改,直接在配置文件裏面更改即可。
現在來更改一下端口爲8730,先進入配置文件,輸入命令 vim /etc/rsyncd.conf,回車,見下圖,
更改上面紅色框框的內容,保存並退出。接着往下操作,
更改配置文件之後,還要重新啓動服務,纔可以生效,然後看到端口更改成功了。
接着去02機器,同步目錄,見下圖,
一開始同步的時候,報錯了,因爲8730端口沒有開放。指定端口後,纔可以同步目錄。
日誌文件,輸入命令 cat /var/log/rsync.log,回車見入查看,見下圖,
“use chroot” 默認爲true,如果是true,同步的文件中如果有軟連接,則會有問題,無法實現同步。這時候更改配置文件裏的 use chroot 爲 false 的話,軟鏈接同步就可以實現了。
現在看看 list 爲 ture 的時候,輸入命令 rsync --port=8730 192.168.218.128::,回車,見下圖,
後面不跟模塊名的時候,會自動列出模塊名。然後更改 list 爲 false,輸入命令 vi /etc/rsyncd.conf,進入下圖,
保存並退出,再來看一下剛纔的命令,見下圖,
list 改爲 false 的時候,就不會有結果出現。
接着來看看 uid 和 gid,在001機器上,原本設置的全部是 root,具體操作見下圖,
查看目錄 /tmp/rsync/ 下的文件權限都是 root,先把這些文件都刪除掉,再重新定義 uid 和 gid,通過命令 vim /etc/rsyncd.conf,見下圖,
nobody 是權限很小的一個用戶。
現在回到02機器上同步一下,見下圖,
可以看到結果的第三行,顯示 Operation not permitted,意思爲權限不夠,所以不能完成同步。所以還要把001機器上的 uid 和 gid 改爲 root,這邊不顯示過程了。然後再回到02機器上同步操作,就可以執行了,見下圖,
傳輸過程指定用戶名 auth users 和密碼文件 secrets file,輸入命令 vim /etc/rsyncd.passwd,回車,見下圖,
輸入密碼,格式見上圖。保存並退出,還要更改文件的權限爲600,見下圖,
接着回到02機器,同步目錄的時候就需要輸入用戶名和密碼了。還有一種方法,在02機器上保存密碼文件,傳輸的時候就不必輸密碼了,具體操作見下圖,輸入命令 vi /etc/rsync_pass.txt,回車,
這邊和001機器上的操作不一樣,這邊直接輸入密碼,保存並退出即可。文件的權限也要改爲600,接着同步服務的時候,輸入命令 rsync -avP /tmp/test/ --port=8730 --password-file=/etc/rsync_pass.txt [email protected]::test/,回車,見下圖,
這樣同步的時候就不用輸密碼了。