04 2018年09月

Linux文件同步工具:rsync实现多台服务器文件同步

发布于:10时56分 | 来源:湛蓝天空  |   编辑:湛蓝  |   日志分类:服务器  |   已聚集:人围观

rsync是一款Linux上的文件同步工具。以下实现多台客户端服务器从服务端服务器同步文件。

安装

一般的Linux系统都自带了这个工具,如果没有的话,可以用下面的命令安装

$ wget https://download.samba.org/pub/rsync/rsync-3.1.1.tar.gz
$ tar -xvzf rsync-3.1.1.tar.gz && cd rsync-3.1.1
$ ./configure && make && sudo make install

服务器端

假设我们有一个目录/home/clinyong/backup/mysql需要同步,创建配置文件

$ sudo touch /etc/rsyncd.conf
$ sudo vi /etc/rsyncd.conf

加入下面的内容

# SYNC守护进程的用户
uid = root
# 运行RSYNC守护进程的组
gid = root
# 不使用chroot
use chroot = no
# 最大连接数是4
max connections = 4
# pid文件存放位置
pid file = /var/run/rsyncd.pid
# 锁文件存放位置
lock file = /var/run/rsync.lock
# 日志文件存放位置
log file = /var/log/rsyncd.log
[web]
# 要同步的目录
path = /home/clinyong/backup/mysql
# 忽略无关的IO错误
ignore errors
# 只读,不能上传
read only = true
# 禁止查看文件列表
list = false
# 允许访问服务的ip
# hosts allow = 192.168.1.200
# 禁止访问服务的ip
# hosts deny = 0.0.0.0/32
# 认证的用户名,系统必须存在的用户,但是密码需要在secrets file 配置,不是系统的密码。
auth users = clinyong
# 认证用户密码文件,配置auth users的密码
secrets file = /etc/backserver.pas

上面配置文件中的mysql可以自定义,客户端同步的时候要用到。上面的认证用户,必须是系统存在的用户。

接下来创建密码文件/etc/backserver.pas

$ sudo touch /etc/backserver.pas
$ sudo chown root:root /etc/backserver.pas
$ sudo chmod 600 /etc/backserver.pas

然后在里面加入

clinyong:clinyong

每个用户一行,冒号前面是用户名,后面是密码,然后启动服务

$ sudo rsync --daemon --config=/etc/rsyncd.conf

这样服务端就算搭建好了,可以把命令加入到开机启动

$ echo 'rsync --daemon --config=/etc/rsyncd.conf' >> /etc/rc.d/rc.local

客户端

假设我们要把刚刚服务器端的/home/clinyong/backup/mysql同步下来。

先创建密码文件,用于同步时的验证

$ touch ~/rsyncd.secrets
$ chmod 600 ~/rsyncd.secrets

这个文件只要放密码就可以了,在这个例子中,则是放入

clinyong

然后运行

$ rsync -avz --delete --password-file=/xxx/rsyncd.secrets clinyong@server_ip::web destination

server_ip换成自己服务器的ip地址,web就是在服务器端的配置文件填写的字段,destination换成本地路径,这样子就能把文件同步下来了。

把命令加入到crontab,让其每天同步一次,运行crontab -e,在最后一行加入

00 00 * * * rsync -avz --delete --password-file=/xxx/rsyncd.secrets clinyong@server_ip::web destination
  把如果要排除指定多个目录建议使用:

$ touch ~/exclude.list
$ chmod 600 ~/exclude.list
$ vi ~/exclude.list
  填写需要排除的多个目录(一行一条): uploadfiles/ cache/ sso_server/ 然后使用如下命令,即可同步是排除指定多目录
rsync -avz --delete --password-file=/xxx/rsyncd.secrets --exclude-from=/root/exclude.list clinyong@server_ip::web destination

除非注明,均为湛蓝天空原创,转载请注明本文网址:http://skyhome.cn/server/516.html

标签:rsync(1)文件同步(1)
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)