配置分為兩大部分,客戶端和服務端
一.服務器端配置
聯網安裝防護進程:
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掉服務,重新執行以下代碼)
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
此時,自動同步完成。若互為備份,同理配置相關文件。