rsync 通過ssh同步以及服務同步

rsync 通過ssh同步以及服務同步

1、rsync 通過 ssh 方式同步

現在打開兩個PuTTY窗口,001機器的見下圖,
rsync 通過ssh同步以及服務同步
02機器見下圖,
rsync 通過ssh同步以及服務同步
兩個的IP地址是不一樣的,001機器的IP地址是 192.168.218.128,02機器的IP地址是 192.168.218.130。
現在在001機器上操作,見下圖,
rsync 通過ssh同步以及服務同步
顯示未找到命令,默認系統中是沒有rsync命令,現在需要在02機器上安裝rsync命令,輸入命令 yum install -y rsync,回車,見下圖,
rsync 通過ssh同步以及服務同步
rsync 通過ssh同步以及服務同步
接着回到001機器,重新操作,通過ssh同步,輸入命令 rsync -av /etc/passwd 192.168.218.130:/tmp/lys.txt ,回車,見下圖,
rsync 通過ssh同步以及服務同步
可以看到文件同步的過程。接着來查看一下文件,輸入命令 cat /tmp/lys.txt 回車,見下圖,
rsync 通過ssh同步以及服務同步
也可以反過來操作,輸入命令 rsync -avP 192.168.218.130:/tmp/lys.txt /tmp/123.txt,回車,見下圖,
rsync 通過ssh同步以及服務同步
以上操作叫拉文件,再上面的操作叫推文件。兩個操作都需要輸入密碼,並且都知道端口是 22,如果不知道對方的端口的話,就需要指定端口,加上-e選項,輸入命令 rsync -avP -e "ssh -p 22" /etc/passwd 192.168.218.130:/tmp/lys.txt ,回車,見下圖,
rsync 通過ssh同步以及服務同步
指定 22 端口,就會連上對方的 22 端口。注意 -e 後面的“ssh -p 22”是一個命令,這個命令可以單獨操作的 ,輸入命令 ssh -p 22 192.168.218.130,回車,見下圖,
rsync 通過ssh同步以及服務同步
可以發現,輸入密碼之後,就連接上02機器了,接着按住 ctrl+d 登出。

2、rsync 通過服務同步

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章