rsync(remote synchronize )是一个远程文件同步工具,支持多个操作系统,用于在多台服务器之间同步目录和文件。rsync采用增量传输文件的方法,只传输新文件和修改过的文件,而不是每次都全部传输,效率比较高。
准备两台或者多台服务器,确保机器之间网络通畅。
1、服务端(提供数据的一端) 192.168.100.1
先在服务器上创建两个需要同步的文件夹
#创建两个测试的文件夹
mkdir /root/test1 test2
#创建几个测试文件
echo "123123" > /root/test1/tt.txt
echo "123123" > /root/test1/tt1.txt
echo "123123" > /root/test2/tt2.txt
echo "123123" > /root/test2/tt3.txt
echo "123123" > /root/test2/tt4.txt
# yum安装rsync组件
yum install -y rsync
安装完成后会出现 /etc/rsyncd.conf 文件,这是配置同步目录的文件,先不着急管他,先创建一个密码文件
#创建密码文件,格式为 user:password,这里我使用的是root账号
echo "root:password" > /etc/rsyncd.secrets
#授权
chown root.root /etc/rsyncd.secrets
#一定要给这个文件600权限
chmod 600 /etc/rsyncd.secrets
#如果不是root用户,单独创建的用户需要把刚刚创建的测试文件夹授权给用户,格式为 用户组:用户名,有权限这行忽略
chown user_group:user /root/test1
开始编辑 /etc/rsyncd.conf 文件,配置同步目录等信息
# RSYNC Config
# 指定传输文件使用的用户
uid = root
# 指定传输文件使用的用户组
gid = root
# 安全设置,切换到安全目录
use chroot = no
# 最大连接数
max connections = 10
# 客户端超时时间,单位秒,设置为 0 不超时
timeout = 900
# PID 文件
pid file = /var/run/rsyncd.pid
# 锁文件
lock file = /var/run/rsync.lock
# 日志文件
log file = /var/log/rsyncd.log
# 日志记录方式
transfer logging = yes
# 忽略文件
exclude = lost+found/
# 忽略不可读文件
ignore nonreadable = yes
# 传输时不压缩的文件
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# 现在的版本需要添加,保留文件的完整属性
fake super = yes
# 模块名,同步时候要指定的名称,可以配置多个,格式如下
[test1]
# 对应的目录
path = /root/test1
# 传输的删除时忽略 I/O 错误,报错会跳过--delete
ignore errors
# 允许写入
read only = false
# 不允许列出
list = false
# 允许的网段,多个使用空格隔开
hosts allow = 192.168.100.2
# 拒绝的网段,拒绝所有
hosts deny = 0.0.0.0/32
# 连接的虚拟用户,非系统用户
auth users = root
# 虚拟用户的账号密码文件
secrets file = /etc/rsyncd/rsyncd.secrets
# 注释说明
comment = this is test1 sync
[test2]
# 对应的目录
path = /root/test2
# 传输的删除时忽略 I/O 错误,报错会跳过--delete
ignore errors
# 允许写入
read only = false
# 不允许列出
list = false
# 允许的网段,多个使用空格隔开
hosts allow = 192.168.100.2
# 拒绝的网段,拒绝所有
hosts deny = 0.0.0.0/32
# 连接的虚拟用户,非系统用户
auth users = root
# 虚拟用户的账号密码文件
secrets file = /etc/rsyncd/rsyncd.secrets
# 注释说明
comment = this is test2 sync
保存完后,直接应用配置,启动rsync
#应用配置并启动
rsync --daemon
#检查端口,默认873
netstat -tlunp | grep 873
如果有防火墙,自己配置一下防火墙或者内网情况下可以直接关闭防火墙(自行百度)
到这边,服务端的配置就结束了
2、客户端配置(从服务端同步文件进来的机器) 192.168.100.2
客户端就比较简单
#安装rsync
yum install -y rsync
#创建一个服务端服务器的密码文件,只要密码,不需要用户名
echo "password" > /etc/rsyncd.secrets
#一样需要600权限
chmod 600 /etc/rsyncd.secrets
配置好后应用一下,直接连接服务端查看文件夹
#test1就是服务端配置的,test1/test2
rsync --list-only --password-file=/etc/rsyncd.secrets 192.168.100.1::test1
这样就说明正常了,现在只是能看到,我们同步过来看看
rsync -avzP --delete --password-file=/etc/rsyncd.secrets 192.168.100.1::test1 /root/test1
这个时候,无论服务端新增还是删除,只要通过这个命令都会同步过来
3、接下来使用crontab做个定时同步,间隔范围自己控制
#创建一个脚本
vi sync_file.sh
#脚本内容
rsync -avzP --delete --password-file=/etc/rsyncd.secrets 192.168.100.1::test1 /root/test1
#保存后给脚本文件授权
chmod 755 sync_file.sh
#配置crontab
crontab -e
#每天10:59分执行一次
59 10 * * * bash /root/sync_file.sh
就酱。。。