Ⅰ rsync服务器架设(数据同步|文件增量备份)
为了实现多个服务器负载均衡,我们需要这几个服务器之间进行数据同步,而rsync软件也能胜任,下面我们来介绍如何架设rsync服务器来达到文件增量备份和数据同步的功能。
什么是rsync
rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用。本文主要讲述的是如何自架rsync服务器,以实现文件传输、备份和镜像。相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效。
rsync的安装
在CentOS服务器,我们可以执行以下命令安装
yum install rsync
对于debian、ubuntu服务器,则是以下命令
sudo apt-get install rsync
rsync服务器的配置文件rsyncd.conf
下面我们将涉及到三个文件 rsyncd.conf,rsyncd.secrets 和rsyncd.motd。
rsyncd.conf 是rsync服务器主要配置文件。
rsyncd.secrets是登录rsync服务器的密码文件。
rsyncd.motd是定义rysnc 服务器信息的,也就是用户登录信息。
下面我们分别建立这三个文件。
mkdir /etc/rsyncd
注:在/etc目录下创建一个rsyncd的目录,我们用来存放rsyncd.conf 和rsyncd.secrets文件;
touch /etc/rsyncd/rsyncd.conf
注:创建rsyncd.conf ,这是rsync服务器的配置文件;
touch /etc/rsyncd/rsyncd.secrets
注:创建rsyncd.secrets ,这是用户密码文件;
chmod 600 /etc/rsyncd/rsyncd.secrets
注:为了密码的安全性,我们把权限设为600;
touch /etc/rsyncd/rsyncd.motd
注:创建rsyncd.motd文件,这是定义服务器信息的文件。
下一就是我们修改 rsyncd.conf 和rsyncd.secrets 和rsyncd.motd 文件的时候了。
rsyncd.conf文件内容:
复制代码
代码如下:
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
port = 873
address = 192.168.1.171
#uid = nobody
#gid = nobody
uid = root
gid = root
use chroot = yes
read only = yes
#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
hosts deny=*
max connections = 5
motd file = /etc/rsyncd/rsyncd.motd
#This will give you a separate log file
#log file = /var/log/rsync.log
#This will log every file transferred - up to 85,000+ per user, per sync
#transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[linuxsirhome]
path = /home
list=yes
ignore errors
auth users = linuxsir
secrets file = /etc/rsyncd/rsyncd.secrets
comment = linuxsir home
exclude = beinan/ samba/
[beinan]
path = /opt
list=no
ignore errors
comment = optdir
auth users = beinan
secrets file = /etc/rsyncd/rsyncd.secrets
密码文件:/etc/rsyncd/rsyncd.secrets的内容格式;
用户名:密码
linuxsir:222222
beinan:333333
注: 这里的密码值得注意,为了安全,你不能把系统用户的密码写在这里。比如你的系统用户 linuxsir 密码是 abcdefg ,为了安全,你可以让rsync 中的linuxsir 为 222222 。这和samba的用户认证的密码原理是差不多的;
rsyncd.motd 文件;
它是定义rysnc 服务器信息的,也就是用户登录信息。比如让用户知道这个服务器是谁提供的等;类似ftp服务器登录时,我们所看到的 ftp ……。 当然这在全局定义变量时,并不是必须的,你可以用#号注掉,或删除;我在这里写了一个 rsyncd.motd的内容为:
+++++++++++++++++++++++++++
+ rsync 2002-2007 +
+++++++++++++++++++++++++++
rsyncd.conf文件代码说明
pid file = /var/run/rsyncd.pid
注:告诉进程写到 /var/run/rsyncd.pid 文件中;
port = 873
注:指定运行端口,默认是873,您可以自己指定;
address = 192.168.1.171
注:指定服务器IP地址;
uid = nobody
gid = nobdoy
注:服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。 如果用nobody 用户和用户组,可能遇到权限问题,有些文件从服务器上拉不下来。所以我就偷懒,为了方便,用了root 。不过您可以在定义要同步的目录时定义的模块中指定用户来解决权限的问题。
use chroot = yes
用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。另外对符号链接文件,将会排除在外。也就是说,你在rsync服务器上,如果有符号链接,你在备份服务器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的内容;这个需要自己来尝试;
read only = yes
注:read only 是只读选择,也就是说,不让客户端上传文件到服务器上。还有一个 write only选项,自己尝试是做什么用的吧;
#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
注:在您可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip 与ip 之间、ip和网段之间、网段和网段之间要用空格隔开;
max connections = 5
注:客户端最多连接数;
motd file = /etc/rsyncd/rsyncd.motd
注:motd file 是定义服务器信息的,要自己写 rsyncd.motd 文件内容。当用户登录时会看到这个信息。
log file = /var/log/rsync.log
注:rsync 服务器的日志;
transfer logging = yes
注:这是传输文件的日志;
[linuxsirhome]
注:模块,它为我们提供了一个链接的名字,链接到哪呢,在本模块中,链接到了/home目录;要用[name] 形式;
path = /home
注:指定文件目录所在位置,这是必须指定的;
auth users = linuxsir
注:认证用户是linuxsir ,是必须在 服务器上存在的用户;
list=yes
注:list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。如果你不想列出来,就no ;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。你自己知道就行了;
ignore errors
注:忽略IO错误,详细的请查文档;
secrets file = /etc/rsyncd/rsyncd.secrets
注:密码存在哪个文件;
comment = linuxsir home data
注:注释可以自己定义,写什么都行,写点相关的内容就行;
exclude = beinan/ samba/
注:exclude 是排除的意思,也就是说,要把/home目录下的beinan和samba 排除在外; beinan/和samba/目录之间有空格分开 ;
启动rsync 服务器及防火墙的设置
启动rsync服务器
启动rsync 服务器相当简单,–daemon 是让rsync 以服务器模式运行;
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
rsync服务器和防火墙
Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
查看一下防火墙是不是打开了 873端口;
iptables -L
通过rsync客户端来同步数据
rsync -avzP linuxsir@::linuxsirhome linuxsirhome
Password: 这里要输入linuxsir的密码,是服务器端提供的,在前面的例子中,我们用的是 222222,输入的密码并不显示出来;输好后就回车;
注: 这个命令的意思就是说,用linuxsir 用户登录到服务器上,把linuxsirhome数据,同步到本地目录linuxsirhome上。当然本地的目录是可以你自己定义的,比如 linuxsir也是可以的;当你在客户端上,当前操作的目录下没有linuxsirhome这个目录时,系统会自动为你创建一个;当存在linuxsirhome这个目录中,你要注意它的写权限。
说明:
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
rsync -avzP --delete linuxsir@::linuxsirhome linuxsirhome
这回我们引入一个 –delete 选项,表示客户端上的数据要与服务器端完全一致,如果 linuxsirhome目录中有服务器上不存在的文件,则删除。最终目的是让linuxsirhome目录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除;
rsync -avzP --delete --password-file=rsync.password linuxsir@::linuxsirhome linuxsirhome
这次我们加了一个选项 –password-file=rsync.password ,这是当我们以linuxsir用户登录rsync服务器同步数据时,密码将读取 rsync.password 这个文件。这个文件内容只是linuxsir用户的密码。我们要如下做;
复制代码
代码如下:
touch rsync.password
chmod 600 rsync.password
echo "222222" rsync.password
rsync -avzP --delete --password-file=rsync.password linuxsir@::linuxsirhome linuxsirhome
注: 这样就不需要密码了;其实这是比较重要的,因为服务器通过crond 计划任务还是有必要的;
让rsync 客户端自动与服务器同步数据
编辑crontab
crontab -e
加入如下代码:
10 0 * * * rsync -avzP --delete --password-file=rsync.password linuxsir@::linuxsirhome linuxsirhome
表示每天0点10分执行后面的命令。更多crontab用法请参考
Ⅱ 濡备綍瀹炵幇瀹㈡埛绔涓庢湇锷″櫒绔镄勬暟鎹钖屾
濡备綍瀹炵幇瀹㈡埛绔涓庢湇锷″櫒绔镄勬暟鎹钖屾ワ纻
濡备綍瀹炵幇瀹㈡埛绔涓庢湇锷″櫒绔镄勬暟鎹钖屾ワ纻
鍦ㄧ幇浠g殑搴旂敤绋嫔簭涓锛屽逛簬瀹㈡埛绔鍜屾湇锷″櫒涔嬮棿镄勬暟鎹钖屾ュ彉寰楄秺𨱒ヨ秺鍏抽敭锛岃繖瀵逛簬鏀鎸佽法骞冲彴銆佸垎甯冨纺鍗忎綔绛夊簲鐢ㄥ満鏅闱炲父链夊府锷┿傚湪链鏂囦腑锛屾垜浠灏呜ㄨ哄备綍瀹炵幇瀹㈡埛绔鍜屾湇锷″櫒涔嬮棿镄勬暟鎹钖屾ャ
1.锘虹姒傚康
鍦ㄦ帰璁ㄥ备綍瀹炵幇瀹㈡埛绔鍜屾湇锷″櫒涔嬮棿镄勬暟鎹钖屾ヤ箣鍓嶏纴鎴戜滑闇瑕佷简瑙d竴浜涘熀链姒傚康鍜屾湳璇锛
瀹㈡埛绔锛氶氩父鎸囩敤浜庤块梾搴旂敤绋嫔簭鎴栨湇锷$殑缁堢璁惧囷纴濡傜数鑴戙佹坠链烘垨骞虫澘鐢佃剳绛夈
链嶅姟鍣锛氭寚鎻愪緵搴旂敤绋嫔簭鎴栨湇锷$殑涓澶涓绘満鎴栨湇锷″櫒锛岄氩父鍏锋湁杈冮珮镄勮$畻鑳藉姏鍜屽瓨鍌ㄨ兘锷涖
鏁版嵁钖屾ワ细鎸囧湪瀹㈡埛绔鍜屾湇锷″櫒涔嬮棿淇濇寔鏁版嵁镄勫畬鍏ㄤ竴镊存э纴鍗冲綋涓涓璁惧囩殑鏁版嵁鍙戠敓鍙桦寲镞讹纴鍏朵粬璁惧囩殑鏁版嵁涔熶细鐩稿簲鍦板彂鐢熷彉鍖栥
鍗忚锛氶氢俊鍗忚鏄瀹㈡埛绔鍜屾湇锷″櫒涔嬮棿阃氢俊镄勮勫垯鍜岀害瀹氾纴渚嫔侣TTP銆乄ebSocket銆乀CP/IP绛夈
API锛埚簲鐢ㄧ▼搴忕紪绋嬫帴鍙o级锛氭槸涓缁勭敤浜庤块梾搴旂敤绋嫔簭鎴栨湇锷$殑鎺ュ彛銆
2.瀹炵幇鏁版嵁钖屾ョ殑锘烘湰铡熷垯
瑕佸疄鐜板㈡埛绔鍜屾湇锷″櫒涔嬮棿镄勬暟鎹钖屾ワ纴闇瑕侀伒寰浠ヤ笅鍑犱釜锘烘湰铡熷垯锛
鏁版嵁镄勬坊锷犮佹洿鏂板拰鍒犻櫎搴旇ラ氲繃API瀹屾垚銆
搴旇ヤ娇鐢ㄥ悓涓鍗忚鍜孉PI鐗堟湰锛岀‘淇濆㈡埛绔鍜屾湇锷″櫒涔嬮棿镄勫畬鍏ㄥ吋瀹广
瀹㈡埛绔鍜屾湇锷″櫒搴旇ヤ娇鐢ㄧ浉浼肩殑鏁版嵁澶勭悊浠g爜锛屼互阆垮厤鍑虹幇鏁版嵁涓崭竴镊寸殑闂棰樸
搴旇ヤ娇鐢ㄦ湇锷″櫒鎺ㄩ併佽疆璇㈡垨Webhook绛夋満鍒朵互銮峰彇链鏂扮殑鏁版嵁镟存柊銆
3.甯哥敤镄勬暟鎹钖屾ユ柟娉
甯哥敤镄勫㈡埛绔鍜屾湇锷″櫒涔嬮棿鏁版嵁钖屾ョ殑鏂规硶链変互涓嫔嚑绉嶏细
链嶅姟鍣ㄦ帹阃侊细鍦ㄨ繖绉嶆儏鍐典笅锛屾湇锷″櫒灏嗘柊镄勬暟鎹鎺ㄩ佺粰瀹㈡埛绔锛岃屼笉闇瑕佸㈡埛绔鍙戝嚭璇锋眰銆傚綋瀹㈡埛绔杩炴帴鍒版湇锷″櫒镞讹纴链嶅姟鍣ㄥ彂阃佹墍链夋渶鏂扮殑鏁版嵁銆傝繖绉嶆柟娉曟瘆杞璇㈡洿楂樻晥锛屽洜涓烘湇锷″櫒涓崭细鍙戦佷笉蹇呰佺殑鏁版嵁銆
杞璇锛氩湪姝ゆ柟娉曚腑锛屽㈡埛绔姣忛殧涓娈垫椂闂达纸渚嫔傛疮鍒嗛挓锛夊悜链嶅姟鍣ㄥ彂鍑烘暟鎹璇锋眰锛屼互镆ョ湅鏄钖︽湁浠讳綍镟存柊鎴栨洿鏀广傜劧钖庢湇锷″櫒灏嗘墍链夋渶鏂扮殑鏁版嵁鍙戦佸洖瀹㈡埛绔銆傝繖绉嶆柟娉曟湁锷╀簬纭淇濆㈡埛绔鍜屾湇锷″櫒涔嬮棿镄勫疄镞舵暟鎹钖屾ワ纴浣嗗彲鑳戒细瀵艰嚧缃戠粶璐熻浇杩囬珮镄勯梾棰樸
Webhook锛氩湪姝ゆ柟娉曚腑锛屾湇锷″櫒灏嗘柊鏁版嵁镟存柊鍙戦佸埌涓涓鐗瑰畾镄刄RL銆傜劧钖庡㈡埛绔灏嗛氲繃姝URL璁块梾骞舵帴鏀舵洿鏂般傝繖绉嶆柟娉曞彲浠ユ洿楂樻晥鍦拌幏鍙栨渶鏂扮殑鏁版嵁锛岄潪甯搁傚悎瀹炴椂搴旂敤銆
4.甯歌侀梾棰桦强瑙e喅鏂规
鍦ㄥ疄鐜版暟鎹钖屾ョ殑杩囩▼涓锛屽彲鑳戒细阆囧埌涓浜涘父瑙侀梾棰樸备互涓嬫槸涓浜涜В鍐虫柟妗堬细
鏁版嵁鍐茬獊锛氩綋澶氢釜瀹㈡埛绔钖屾椂镟存柊钖屼竴鏁版嵁镞讹纴鍙鑳戒细鍑虹幇鏁版嵁鍐茬獊镄勬儏鍐点备负浜呜В鍐宠繖涓闂棰桡纴鍙浠ヤ娇鐢ㄤ箰瑙傞挛鎴栨偛瑙傞挛鎶链锛岀‘淇濇暟鎹镄勬g‘镐с
鏁版嵁浼犺緭澶辫触锛氩綋鏁版嵁浼犺緭澶辫触镞讹纴鍙鑳戒细鍑虹幇鏁版嵁涓崭竴镊寸殑闂棰樸备负浜呜В鍐宠繖涓闂棰桡纴鍙浠ヤ娇鐢ㄧ紦瀛樻満鍒讹纴浠ヤ究鍦ㄥけ璐ユ椂閲嶆柊灏濊瘯鏁版嵁浼犺緭銆
瀹夊叏镐ч梾棰桡细褰揿㈡埛绔鍜屾湇锷″櫒涔嬮棿浼犺緭鏁忔劅鏁版嵁镞讹纴瀹夊叏镐ф垚涓轰竴涓閲嶈佺殑闂棰樸备负浜嗕缭璇佸畨鍏ㄦэ纴鍙浠ヤ娇鐢⊿SL銆丠TTPS鎴栧叾浠栧姞瀵嗘妧链銆
镐荤粨
瀹㈡埛绔鍜屾湇锷″櫒涔嬮棿镄勬暟鎹钖屾ユ槸鐜颁唬搴旂敤绋嫔簭闱炲父閲嶈佺殑涓閮ㄥ垎銆傚逛簬鍒嗗竷寮忓岗浣溿佽法骞冲彴鏀鎸佺瓑搴旂敤鍦烘櫙锛屾暟鎹钖屾ユ垚涓轰竴涓鍏抽敭锲犵礌銆傚湪链鏂囦腑锛屾垜浠浠嬬粛浜嗕竴浜涘父鐢ㄧ殑鏁版嵁钖屾ユ柟娉曞拰瑙e喅鏂规堬纴甯屾湜鑳藉熷府锷╁紑鍙戜汉锻樻洿濂藉湴瀹炵幇瀹㈡埛绔鍜屾湇锷″櫒涔嬮棿镄勬暟鎹钖屾ャ
Ⅲ 两台服务器的数据同步如何实现
1.安装CentOS7.0yum install ssh 安装SSH协议yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同巧渣困步孝念多台主机间的文件)service sshd restart 启动服务任务梁蚂