rsync實現多臺linux服務器的文件同步

1、首先安裝rsync,怎樣安裝都行,rpm,yum,仍是你用源碼安裝均可以。由於我用的是阿里雲的ESC,yum install rsync就ok了。

2、配置rsync服務
1.先創建個同步數據的賬號php

1
2
3
groupadd rsync
useradd -g rsync -s /sbin/nologin -d /home/rsync rsync
passwd rsync

 

2.rsyncd.confvim

1
vim /etc/rsyncd.conf

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
secrets file = /etc/rsyncd.secrets
motd file = /etc/rsyncd.motd
read only = yes
list = yes
uid = rsync /*同步用的賬號,此帳戶對模塊要有相應的權限*/
gid = rsync /*同步用的賬號組*/
hosts allow = 10.172.222.246 #哪些電腦能夠訪問rsync服務,多個ip用空格隔開
hosts deny = 192.168.100.0/24 #哪些電腦不能夠訪問rsync服務
max connections = 0 /*最大鏈接數,0表示無限制*/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
#再定義rsync目錄
[www]
comment = www 's directory from 10.171.88.115
path = /alidata/www /*模塊的路徑*/
chroot = false
authusers=rsync #不設置表明客戶端同步無需密碼</pre>

(注:以上註釋部分真實使用時請去掉,不去掉會有語法錯誤,下同!!!)bash

3.rsyncd.secrets服務器

1
vi /etc/rsyncd.secrets

 

rsyncd.secrets是存儲rsync服務的用戶名和密碼的,它是一個明文的文本文件,下面給出一個rsyncd.secrets文件的例子:socket

1
rsync:abcde

由於rsyncd.secrets存儲了rsync服務的用戶名和密碼,因此很是重要,所以文件的屬性必須設爲600,只有全部者能夠讀寫:tcp

1
chmod 600 /etc/rsyncd.secrets

 

4.rsyncd.motdui

1
vi /etc/rsyncd.motd

 

rsyncd.motd記錄了rsync服務的歡迎信息,你能夠在其中輸入任何文本信息,如:阿里雲

1
Welcome to use the rsync services!

 

5.servicesspa

1
vi /etc/services

 

services並非rsync的配置文件,這一步也能夠不作。而修改了services文件的好處就在於系統知道873端口對就的服務名爲rsync。修改services的方法就是確保services中有以下兩行,沒有的話就自行加入:.net

1
2
rsync  873/tcp  # rsync
rsync  873/udp  # rsync

 

6./etc/xinetd.d/rsync

1
vi /etc/xinetd.d/rsync

 

創建一個名爲/etc/xinetd.d/rsync文件,輸入如下內容:

1
2
3
4
5
6
7
8
9
10
service rsync
{
disable = no
socket_type  = stream
wait      = no
user      = root
server     = /usr/local/rsync/bin/rsync #寫你rsync的運行文件目錄
server_args  = - -daemon
log_on_failure += USERID
}

 

保存後,就能夠運行rsync服務了。

7.若是有防火牆 rsync服務器和防火牆,關掉對rsync的屏蔽

1
iptables -A INPUT -p tcp -m state --state NEW -m tcp - -dport 873 -j ACCEPT

 

8.運行rsync 輸入如下命令: (可能xinetd 沒安裝 yum安裝一下就行)

1
/etc/rc.d/init.d/xinetd reload

 

這樣rsync服務就在這臺機器上(10.171.88.115)運行起來了,接下來就是如何來使用它了。 若是想開機自啓動

1
vi /etc/rc.d/rc.local

 

將/etc/rc.d/init.d/xinetd reload或者service xinetd start加進去就能夠了

3、rsync客戶端配置
1.安裝rsync,無需啓動rsync服務,由於它又不當rsync服務器
2.

1
rsync -avz --progress --delete rsync@10.171.88.115::www /alidata/www

 

有設置權限(服務端目錄設置時有authusers:xxxxx)的須要輸入密碼,若是沒有就當即同步啦 若是嫌每次輸入密碼麻煩,新建一個密碼文件,#touch /etc/rsync.secret 編輯

1
vim /etc/rsync.secret

 

1
abcde #裏面寫密碼就好了

1
chmod 600 /etc/rsync.secret

 

而後同步時命令就能夠這樣寫:

1
rsync -avz --progress --delete --password-file=/etc/rsync.secret rsync@10.171.88.115::www /alidata/www

 

3.crontb實現自動同步 先新建一個sh文件

1
2
touch /root/rsync.sh
vim /root/rsync.sh

 

裏面輸入:

1
2
!/bin/bash
rsync -avz --progress --delete --password-file=/etc/rsync.secret rsync@10.171.88.115::www /alidata/www >> /root/rsync-crontablog.txt

 

(這裏把輸出的結果寫到了一個txt文件裏)

ok!下面寫crontb文件:

1
2
crontb -e 
*/1 7-23 * * * /root/rsync.sh

 

讓它7點到晚上23點每隔一分鐘同步 修改文件權限:

1
chmod 755 /root/rsync.sh

 

大功告成!!!
(注:以上是客戶端向服務端取文件,你也能夠從客戶端向SERVER端上傳文件,那就要反過來,1個服務器作客戶端,n臺服務器作server端,也就是要配不少次server端的配置,有興趣的同窗能夠嘗試一下。另外我這裏用的是crontab進行最快一分鐘一次有點延時的實時同步,你們能夠嘗試rsync+inotify進行真正的實時同步,推薦博客:http://blog.chinaunix.net/xmlrpc.php?

相關文章
相關標籤/搜索