centos7安裝rsync及兩臺機器進行文件同步

centos7安裝rsync及兩臺機器進行文件同步

2017年12月21日 11:17:46 碼農下的天橋 閱讀數:2210 標籤: centosrsync同步 更多html

我的分類: 後端java

所屬專欄: 研發模式及運維web

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 https://blog.csdn.net/cdnight/article/details/78861543vim

安裝及配置

安裝運行:後端

yum -y install rsync  
#啓動rsync服務
systemctl start rsyncd.service
systemctl enable rsyncd.service

#檢查是否已經成功啓動
netstat -lnp|grep 873
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

這裏寫圖片描述 
好了,好了。安裝成功。centos

配置: 
首先,配置文件在: 
/etc/rsyncd.conf服務器

vim /etc/rsyncd.conf
  • 1

看到:java-web

這裏寫圖片描述

好了,先修改爲:運維

uid = root                              
 # //設置運行rsync 進程的用戶
 gid = root
 use chroot = no
 max connections = 4
# pid file = /var/run/rsyncd.pid        
#//CentOS7中yum安裝不需指定pid file 不然報錯
 lock file=/var/run/rsyncd.lock
 log file = /var/log/rsyncd.log     
 # //此文件定義完成後系統會自動建立
 exclude = lost+found/
 transfer logging = yes
 timeout = 900
 ignore nonreadable = yes         
 # //同步時跳過沒有權限的目錄
 dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2          
 #  //傳輸時不壓縮的文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

這裏寫圖片描述

重啓:svn

systemctl restart rsyncd.service
  • 1

兩個服務器間傳輸文件

好了,上面配置完rsync了,那麼接下來,假設有兩臺服務器,開發服務器dev及線上測試環境test,如今須要從dev將可運行代碼更新到test上面去。

注意:每一次傳輸文件客戶端將告訴服務端須要調用哪一個傳輸規則進行傳輸,而傳輸規則以下:

[simba]          //此名字即客戶端使用rsync來同步的路徑
path=/usr/local/simba    //實際須要同步的路徑
comment=simba    //和中括號里名字同樣就行
ignore errors
read only=no   //表示能夠pull 
write only=no      //表示能夠push
list=no
auth users=rsyncuser    //客戶端獲取文件的身份此用戶並非本機中確實存在的用戶
secrets file=/etc/rsyncd.passwd     //用來認證客戶端的祕鑰文件 格式 USERNAME:PASSWD 此文件權       
                                                        //限必定須要改成600,且屬主必須與運行rsync的用戶一致。
hosts allow=*    //容許全部主機訪問
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

好了,咱們本身作一個規則,假定test上面接收的目錄是: /data/www/helloRsync

#建立目錄
mkdir  /data/www/helloRsync
  • 1
  • 2
  • 3
  • 4

而dev上面也是。。。 
請自行建立。 
那麼在test上面的/etc/rsyncd.conf添加規則:

#規則名稱,做爲測試用規則,直接用這個算了。
[helloRsync]          
#同步的路徑
path=/data/www/helloRsync    
#規則描述
comment=測試規則
ignore errors
#是否能夠pull
read only=no    
#是否能夠push
write only=no      
list=no
#下面配置同步時候的身份,注意該身份是在rsync裏面定義的,並不是是本機實際用戶。等下說說如何在rsync裏面定義身份。
#客戶端獲取文件的身份此用戶並非本機中確實存在的用戶
auth users=rsyncuser    
#//用來認證客戶端的祕鑰文件 格式 USERNAME:PASSWD 此文件權     
#//限必定須要改成600,且屬主必須與運行rsync的用戶一致。  
secrets file=/etc/rsyncd.passwd                                                             
#容許全部主機訪問
hosts allow=*
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

這裏寫圖片描述

給rsync定義身份,以下:

echo 'rsyncuser:123456'>/etc/rsyncd.passwd   //文件用戶名和路徑爲上面定義,別寫錯,密碼本身定
chmod 600 /etc/rsyncd.passwd        //修改權限
  • 1
  • 2

重啓服務。

systemctl restart rsyncd.service
  • 1

客戶端的配置

1。建立密碼。

echo '123456' >>/etc/rsyncd-test.passwd     //注意這裏只須要服務器rsyncd.passwd 中的密碼
chmod 600 /etc/rsyncd-test.passwd
  • 1
  • 2

爲了測試順利,咱們添加一些文件進行同步,譬如:

echo 'test,hello'>> /data/www/helloRsync/readme.txt
  • 1
  • 2

好了,同步:

rsync -auv --password-file=/etc/rsyncd-test.passwd rsyncuser@120.x.x.x::helloRsync /data/www/helloRsync/
  • 1

這裏寫圖片描述

看看服務器上面對應目錄

這裏寫圖片描述

檢查緣由

這裏寫圖片描述

test上面看日誌:

vim  /var/log/rsyncd.log
  • 1
  • 2

這裏寫圖片描述

好了,

這裏寫圖片描述

auth user 是錯的,要用 auth users,也是醉了,都沒發現嗎?

改過之後重啓rsync服務,在嘗試

獲得:

這裏寫圖片描述

name or service not kunown

據查這不是問題,懷疑,是rsync命令問題,應該是將test的文件下載下來了,因而將目錄調換一下順序,獲得:

rsync -auv --password-file=/etc/rsyncd-test.passwd  /data/www/helloRsync/ rsyncuser@120.x.x.x::helloRsync
  • 1

報錯: 
這裏寫圖片描述

好了,是沒有放開權限: 
這裏寫圖片描述

這裏寫圖片描述

放開之後重啓終於成功了。淚流滿面。坑爹丫。

一份真實環境用的更新腳本demo

src="/usr/local/webroot/java-web-bld"
rsync -rauvvt --progress \
--password-file=/etc/rsyncd-test.passwd \
--exclude="console/data" \
--exclude=".svn" \
--exclude="WEB-INF/logs" \
--exclude="res/upload" \
--exclude="WEB-INF/upload" \
--exclude="WEB-INF/temp" \
--exclude="env.properties" \
/usr/local/webroot/java-web-bld/ rsyncuser@xxx.xx.xx.xxx::backend
相關文章
相關標籤/搜索