centos 多台 文件夹同步_CentOS7配置rsync实现文件同步
rsync(remote synchronize )是一個(gè)遠(yuǎn)程文件同步工具,支持多個(gè)操作系統(tǒng),用于在多臺(tái)服務(wù)器之間同步目錄和文件。rsync采用增量傳輸文件的方法,只傳輸新文件和修改過(guò)的文件,而不是每次都全部傳輸,效率比較高。
rsync有以下特點(diǎn):
1)支持目錄和文件的上傳和下載功能;
2)可以鏡像保存整個(gè)目錄樹(shù)和文件系統(tǒng);
3)傳輸效率高,只傳輸新增和修改過(guò)的文件。
一、安裝軟件包
rsync的客戶端和服務(wù)器軟件的安裝包都是rsync。
yum -y install rsync
二、修改系統(tǒng)配置
1、關(guān)閉SELINUX
修改/etc/selinux/config文件,把SELINUX參數(shù)的值改為disabled。
SELINUX =disabled
重啟linux系統(tǒng)或執(zhí)行 setenforce 0 使修改馬上生效。
2、開(kāi)通防火墻端口
rsync缺省的端口是873,您可以修改配置文件中的端口。
1)防火墻開(kāi)通873端口。
firewall-cmd --zone=public --add-port=873/tcp --permanent
2)重啟防火墻。
systemctl restart firewalld
3、啟用rsyncd服務(wù)
rsync的服務(wù)名是rsyncd。
1)啟動(dòng)rsyncd服務(wù)。
systemctl start rsyncd
2)把rsyncd服務(wù)設(shè)置為開(kāi)機(jī)自啟動(dòng)。
systemctl enable rsyncd
三、配置rsync
接下來(lái)我用示例來(lái)顯示文件同步的配置和使用,需求如下:
1)我只用一臺(tái)服務(wù)器來(lái)測(cè)試,IP地址是192.168.1.129,既是服務(wù)器,也是客戶端;
2)服務(wù)端的目錄是/tmp/docs;
3)我將創(chuàng)建兩個(gè)客戶端用戶:client1和client2;
4)客戶端client1的目錄是/tmp/docs1;
5)客戶端client2的目錄是/tmp/docs2;
6)客戶端client1把/tmp/docs1目錄中的文件發(fā)送給服務(wù)端;
7)客戶端client2從服務(wù)端下載文件,存放在/tmp/docs2目錄中。
rsync的服務(wù)器和客戶端,這是一個(gè)邏輯的概念,并不是物理的,如果您有三個(gè)服務(wù)器,就可以用三臺(tái)服務(wù)器來(lái)測(cè)試,原理是一樣的。
1、創(chuàng)建操作系統(tǒng)用戶
操作系統(tǒng)用戶可以是普通的用戶,也可以是簡(jiǎn)單的、無(wú)需登錄的、沒(méi)有HOME目錄的用戶,如下:
useradd -M -s /sbin/nologin rsync -g bin # 創(chuàng)建rsync用戶,指定組為bin(其它組也行)。
注意,這個(gè)用戶是在服務(wù)器上創(chuàng)建的,不是客戶端。
2、創(chuàng)建測(cè)試目錄和文件
執(zhí)行以下腳本,創(chuàng)建/tmp/docs目錄,生成測(cè)試和文件,并指定用戶和組。
rm -rf /tmp/docs /tmp/docs1 /tmp/docs2 # 刪除測(cè)試目錄。
mkdir /tmp/docs /tmp/docs1 /tmp/docs2 # 創(chuàng)建三個(gè)測(cè)試目錄。
ls /usr > /tmp/docs1/usr.txt # 把ls /usr的結(jié)果輸出到/tmp/docs1/usr.txt文件。
ls /etc > /tmp/docs1/etc.txt # 把ls /etc的結(jié)果輸出到/tmp/docs1/etc.txt文件。
chown -R rsync:rsync /tmp/docs # 修改/tmp/docs目錄及文件用戶和組。
3、創(chuàng)建rsnyc登錄用戶密碼文件
在rsync服務(wù)器上創(chuàng)建登錄用戶/密碼文件/etc/rsyncd.passwd,用于客戶端的身份認(rèn)證,內(nèi)容如下:
client1:pwd1
client2:pwd2
以上文件包括了兩個(gè)用戶(用戶名/密碼分別是client/pwd1和client2/pwd2)。
把/etc/rsyncd.passwd文件的權(quán)限設(shè)置為600,如果不這么做,客戶端登錄會(huì)失敗。
chmod 600 /etc/rsync.passwd
4、配置rsync服務(wù)器參數(shù)
rsync服務(wù)器的配置文件是/etc/rsyncd.conf,內(nèi)容如下:
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# rsyncd全局參數(shù)。
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = client1,client2
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
# 同步模塊配置。
[docs]
comment = welcome to docs!
path = /tmp/docs
注意,不要在參數(shù)后面加#和說(shuō)明文字,是非法的。
全局參數(shù)說(shuō)明:
1)uid = rsync,rsync服務(wù)端操作系統(tǒng)的用戶,即上面第1點(diǎn)中創(chuàng)建的操作系統(tǒng)用戶,您可以創(chuàng)建新的操作系統(tǒng)用戶,也可以用現(xiàn)有的用戶。
2)gid = rsync,rsync服務(wù)端操作系統(tǒng)的用戶的組,即uid用戶的組。
3)port = 873,用于通信的TCP端口,缺省是873。
4)fake super = yes,rsync服務(wù)端操作系統(tǒng)的用戶可以不用root。
5)use chroot = no,關(guān)閉假根功能。
6)max connections = 200,客戶端最大連接數(shù)。
7)timeout = 600,超時(shí)時(shí)間。
8)ignore errors,忽略錯(cuò)誤信息。
9)read only = false,是否為只讀方式。
10)list = false,不允許查看模塊信息。
11)auth users = client1,client2,指定允許登錄的客戶端認(rèn)證用戶清單,用逗號(hào)分隔,必須是/etc/rsync.passwd文件中配置的用戶。
12)secrets file = /etc/rsync.passwd,定義rsync客戶端用戶認(rèn)證的密碼文件。
13)log file = /var/log/rsyncd.log,rsync服務(wù)運(yùn)行日志文件,注意,日志文件日積月累,必須保證有足夠的磁盤空間。
同步參數(shù)說(shuō)明:
1)[docs],模塊名稱,自定義的名稱,不一定要與同步目錄相同。
2)comment = welcome to docs!,模塊說(shuō)明文字。
3)path = /tmp/docs,同步的目錄名,必須是uid參數(shù)指定的用戶和gid參數(shù)指定的組。
5、把客戶端的文件同步上傳到服務(wù)器
1)采用client1用戶,把客戶端/tmp/docs1目錄下的文件同步到服務(wù)器,命令如下:
rsync -avz /tmp/docs1/* client1@192.168.1.129::docs
2)檢查服務(wù)端的/tmp/docs目錄和客戶端的/tmp/docs目錄下的文件是否相同。
3)再生成一些測(cè)試文件:創(chuàng)建/tmp/docs1/aaa/tmp.txt文件。
mkdir /tmp/docs1/aaa
ls /tmp > /tmp/docs1/aaa/tmp.txt
4)再執(zhí)行一次同步。
6、從服務(wù)器同步下載文件到客戶端
1)采用client2用戶,把服務(wù)器的文件下載到客戶端/tmp/docs2目錄命令如下:
rsync -avz client2@192.168.1.129::docs /tmp/docs2
注意,我用client1用戶上傳文件,用client2下載文件,其目的是為了演示多個(gè)客戶端帳號(hào)的配置和使用方法,您也可以只用一個(gè)帳號(hào)上傳和下載文件。
7、客戶端的密碼配置
以上演示客戶端同步文件的時(shí)候,需要手工的輸入密碼,但是在實(shí)際應(yīng)用中,命令可能在后臺(tái)運(yùn)行,不希望手工輸入密碼,這個(gè)需求有兩種解決方法:
1)設(shè)置客戶端的密碼文件。
例如client1用戶,密碼文件是/etc/client1.passwd,內(nèi)容如下:
echo pwd1 > /etc/client1.passwd
chmod 600 /etc/client1.passwd
注意,客戶端的密碼文件權(quán)限一定要是600,否則認(rèn)證會(huì)失敗。
同步上傳的命令如下:
rsync -avz /tmp/docs1/* client1@192.168.1.129::docs --password-file=/etc/client1.passwd
2)設(shè)置客戶端的密碼環(huán)境變量。
export RSYNC_PASSWORD=pwd1
同步上傳的命令如下:
rsync -avz /tmp/docs1/* client1@192.168.1.129::docs
四、應(yīng)用經(jīng)驗(yàn)
1、小心有坑
rsrync的配置有兩個(gè)坑:1)配置文件/etc/rsyncd.conf中,參數(shù)后面不要用#注釋;2)服務(wù)端和客戶端密碼文件的權(quán)限一定要是600,否則認(rèn)證失敗。
2、客戶端權(quán)限問(wèn)題
客戶端可以用任何用戶來(lái)執(zhí)行,只要該用戶對(duì)本地目錄有足夠的權(quán)限就可以了。
3、日志文件的問(wèn)題
小心服務(wù)端的日志文件(log file)越積越大。
4、效率問(wèn)題
rsync同步文件采用的是增量同步的方法,本質(zhì)上就是在傳輸文件之前,先判斷客戶端與服務(wù)器目錄的文件變量情況,如果待同步目錄下的文件太多,這個(gè)判斷很費(fèi)時(shí)間。
5、rsync+sersync架構(gòu)
上面提到的rsync存在效率問(wèn)題,最終的解決方法是采用rsync+sersync架構(gòu)。
1)sersync可以記錄被監(jiān)聽(tīng)目錄中發(fā)生變化的(增,刪,改)具體某個(gè)文件或目錄的名字;
2)rsync在同步時(shí),只同步發(fā)生變化的文件或目錄(每次發(fā)生變化的數(shù)據(jù)相對(duì)整個(gè)同步目錄數(shù)據(jù)來(lái)說(shuō)很小,rsync在遍歷查找對(duì)比文件時(shí),速度很快),因此效率很高。
rsync+sersync架構(gòu)在本文就不介紹了,各位真的有需求時(shí)再研究它。
五、版權(quán)聲明
C語(yǔ)言技術(shù)網(wǎng)原創(chuàng)文章,轉(zhuǎn)載請(qǐng)說(shuō)明文章的來(lái)源、作者和原文的鏈接。
作者:碼農(nóng)有道
如果這篇文章對(duì)您有幫助,請(qǐng)點(diǎn)贊支持,或在您的博客中轉(zhuǎn)發(fā)我的文章,謝謝!!!
如果文章有錯(cuò)別字,或者內(nèi)容有錯(cuò)誤,或其他的建議和意見(jiàn),請(qǐng)您留言指正,非常感謝!!!
總結(jié)
以上是生活随笔為你收集整理的centos 多台 文件夹同步_CentOS7配置rsync实现文件同步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 两条线段相切弧_两条直线间的圆弧连接
- 下一篇: 李小璐和贾乃亮在一起了吗?