contos7.2版本中rsync 3.1.2實現文件同步備份的方法


配置分為兩大部分,客戶端和服務端

一.服務器端配置

聯網安裝防護進程:

yum -y install xinetd

 編譯安裝rsync3.1.2 官方網站https://rsync.samba.org/

 解壓縮包並安裝

tar -zxvf rsync-3.0.9.tar.gz
tar -zxvf rsync-patches-3.0.9.tar.gz
cd rsync-3.0.9  #定位到文件
./configure     #選中文件夾下的configure文件
make
make install

*注:離線狀態下,會提示checking for gcc...no等信息。原因是缺少gcc環境包。需配置本地yum,安裝該環境包,地址:/etc/yum.repos.d/CentOS-Media.repo

將文件中原有代碼注釋掉(也可清理掉該文件夾下其他配置文件,不包括文件夾,不推薦這樣),添加本地配置並將iso系統光盤解壓至目錄/home/centos7/下

[LocalYum]
name=LocalYum
baseurl=file:///home/CentOS7.2/Media/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

然后,重新清理

yum clean all
yum makecache

即可使用本地的yum進行基礎的依賴包安裝

*同時也可以在kvm虛擬機中選擇虛擬磁盤的方式掛載yum,需先在該虛擬機所在實體機的服務器放入系統盤,在kvm虛擬機中選擇並找到iso文件,同時虛擬機中的系統配置好CentOS-Media.repo

[LocalYum]
name=LocalYUm
baseurl=file:///mnt/cdrom/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

后還需使用命令重新掛載一下,若使用KVM虛擬機中導入源也需要重新掛載iso文件。

mount -t auto /dev/cdrom /mnt/cdrom

 

設置防護進程xinetd的配置文件(不存在就自己生成一個)

vi /etc/xinetd.d/rsync

將其修改成

  service rsync
  {
  disable = no
  socket_type = stream
  wait = no
  user = root
  server = /usr/bin/rsync
  server_args = –daemon
  log_on_failure += USERID
  }

修改后啟動 xinetd防護進程

service xinetd restart

啟動后防火牆要打開端口,其要允許的端口是 873(注:centos7防火牆默認使用的是firewall不是iptables)

firewall-cmd --zone=public --add-port=873/tcp --permanent(--permanent永久生效,沒有此參數重啟后失效)
systemctl restart firewalld.service
#重新載入服務
firewall-cmd --reload #更新防火牆規則

*刪除一個防火牆允許的端口(測試用)firewall-cmd --zone= public --remove-port=80/tcp --permanent

*關閉防火牆(測試用) systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止開機啟動
systemctl enable firewalld.service #開機啟動

查看目前端口狀態命令 (注:殺死進程命令 kill ...)

netstat -ntpl

設置rsync的的配置文件(不存在就自己生成一個)

vi /etc/rsyncd.conf 

將其修改成(注:該文件的配置跟版本有很大關系,該配置文件針對rsync 3.1.2,使用時將以下代碼中中文注釋去除)

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

 uid = root                #設置運行rsync 進程的用戶
 gid = root
 use chroot = no
 max connections = 4
 pid file = /var/run/rsyncd.pid
 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  #傳輸時不壓縮的文件

[test] #模塊名,后續要與客戶端中同步命令模塊名保持一致
path = /home/www #需要同步的目錄
comment = test export area #與模塊名一致

ignore errors 
read only = true
#write only = yes 
list = false 

auth users = root  #客戶端獲取文件的身份要用到的用戶名,此用戶並不是本機中確實存在的用戶,也可是本機存在的用戶名,如果多個,空格分隔開
secrets file = /etc/rsyncd.secrets   #配置密碼的文件

hosts allow = *   #允許的客戶端ip * 允許所有客戶端連接 為了安全起見需要設置指定ip

修改配置密碼文件(不存在就自己生成一個)

vi /etc/rsyncd.secrets

將其修改成

root:密碼  #用戶名:密碼,一行一個,密碼最好別和系統密碼一樣。用戶名就是上面設置的auth users里面的用戶名

然后切記修改改密碼文件的權限(密碼文件權限屬性要設得只有屬主可讀)

chown root:root /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets

查看是否修改成功

ll /etc/rsyncd.secrets
未修改之前顯示:
-r-------. 1 root root 12 5\u6708  11 19:10 /etc/rsyncd.secrets
修改成功顯示:
-rw-------. 1 root root 12 5\u6708  11 19:10 /etc/rsyncd.secrets

重新啟動rsync服務(不行的話,查看rsyncd.log文件,kill掉服務,重新執行以下代碼)

  rsync --daemon --config=/etc/rsyncd.conf
  systemctl start rsyncd.service
  systemctl enable rsyncd.service

二.client 端進行同步

安裝rsync

yum -y install rsync

客戶端建立密碼文件

vi /etc/rsyncd.passwd

將其修改成

XXXXXX  #密碼,與服務端設置的密碼相同,就是通過這個密碼連接服務端的

然后切記修改改密碼文件的權限(密碼文件權限屬性要設得只有屬主可讀)

chmod 600 /etc/rsyncd.passwd 

開始同步

rsync -vzrtopgu --progress --delete --password-file=/etc/rsyncd.passwd root@192.xx.xx.xx::test /www/w_demo
這個命令行中 -vzrtopg 里的 
v 是 verbose,z 是壓縮傳輸,r 是 recursive,topg 都是保持文件原有屬性如屬主、時間的參數。u 是只同步已經更新的文件,避免沒有更新的文件被重復更新一次,不過要注意兩者機器的時鍾的同步。 – progress 是指顯示出詳細的進度情況, – delete 是指如果服務器端刪除了這一文件,那么客戶端也相應把文件刪除,保持真正的一致。
root 為auth users設置的用戶名
192.xx.xx.xx 為服務端ip
test 為服務端設置的模塊名
/www/w_demo 為客戶端存放的地址
注:若增加不同步文件(千萬注意后面的空格)
例如忽略
t.html
rsync -vzrtopgu --progress --exclude 't.html' --password-file=/etc/rsyncd.passwd root@192.XX.XX.XX::test /www/w_demo

3.自動同步,客戶端制定計划任務

安裝crontab(一般自帶)

yum install vixie-cron
yum install crontabs
vixie-cron軟件包是cron的主程序;
crontabs軟件包是用來安裝、卸裝、或列舉用來驅動 cron 守護進程的表格的程序。
cron 是linux的內置服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
 
        

查看crontab服務狀態

service crond status

 寫一個crontab自執行參數的配置文件

vi /tmp/rsyncd.sh

添加執行代碼

crontab -e

在編輯器中加入crontab自執行參數的配置文件,* * * * * 參數為每分鍾執行一次,相關說明見crontab文件或查詢網上相關資料(注意空格)

* * * * * sh /tmp/rsyncd.sh

此時,自動同步完成。若互為備份,同理配置相關文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM