配置分为两大部分,客户端和服务端
1)yum安装组件
sudo yum -y install epel-release
sudo yum -y install gcc g++ gawk autoconf automake python3-pip
sudo yum -y install acl libacl-devel
sudo yum -y install attr libattr-devel
sudo yum -y install xxhash-devel
sudo yum -y install libzstd-devel
sudo yum -y install lz4-devel
sudo yum -y install openssl-devel
python3 -mpip install --user commonmark
一.服务器端配置
联网安装防护进程:
yum -y install xinetd
设置防护进程xinetd的配置文件(不存在就自己生成一个)
vi /etc/xinetd.d/rsync
将其修改成
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = –daemon log_on_failure += USERID }
修改后启动 xinetd防护进程
service xinetd restart
启动后防火墙要打开端口,其要允许的端口是 873(注:centos7防火墙默认使用的是firewall不是iptables)
firewall-cmd --zone=public --add-port=873/tcp --permanent(--permanent永久生效,没有此参数重启后失效) systemctl restart firewalld.service #重新载入服务 firewall-cmd --reload #
更新防火墙规则
*删除一个防火墙允许的端口(测试用)firewall-cmd --zone= public --remove-port=80/tcp --permanent
*关闭防火墙(测试用)
systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止开机启动 systemctl enable firewalld.service #开机启动
查看目前端口状态命令 (注:杀死进程命令 kill ...)
netstat -ntpl
设置rsync的的配置文件(不存在就自己生成一个)
vi /etc/rsyncd.conf
将其修改成(注:该文件的配置跟版本有很大关系,该配置文件针对rsync 3.1.2,使用时将以下代码中中文注释去除)
# /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: uid = root #设置运行rsync 进程的用户 gid = root use chroot = no max connections = 4 pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log #此文件定义完成后系统会自动创建,出错的话可以从此文件查看报错记录 exclude = lost+found/ transfer logging = yes timeout = 900 ignore nonreadable = yes #同步时跳过没有权限的目录 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 #传输时不压缩的文件 [test] #模块名,后续要与客户端中同步命令模块名保持一致 path = /home/www #需要同步的目录 comment = test export area #与模块名一致 ignore errors read only = true #write only = yes list = false auth users = root #客户端获取文件的身份要用到的用户名,此用户并不是本机中确实存在的用户,也可是本机存在的用户名,如果多个,空格分隔开 secrets file = /etc/rsyncd.secrets #配置密码的文件 hosts allow = * #允许的客户端ip * 允许所有客户端连接 为了安全起见需要设置指定IP
修改配置密码文件(不存在就自己生成一个)
vi /etc/rsyncd.secrets
将其修改成
root:密码 #用户名:密码,一行一个,密码最好别和系统密码一样。用户名就是上面设置的auth users里面的用户名
然后切记修改改密码文件的权限(密码文件权限属性要设得只有属主可读)
chown root:root /etc/rsyncd.secrets chmod 600 /etc/rsyncd.secrets
查看是否修改成功
ll /etc/rsyncd.secrets
未修改之前显示:
-r-------. 1 root root 12 5\u6708 11 19:10 /etc/rsyncd.secrets
修改成功显示:
-rw-------. 1 root root 12 5\u6708 11 19:10 /etc/rsyncd.secrets
重新启动rsync服务(不行的话,查看rsyncd.log文件,kill掉服务,重新执行以下代码)
rsync --daemon --config=/etc/rsyncd.conf systemctl start rsyncd.service systemctl enable rsyncd.service
二.client 端进行同步
安装rsync
yum -y install rsync
客户端建立密码文件
vi /etc/rsyncd.passwd
将其修改成
XXXXXX #密码,与服务端设置的密码相同,就是通过这个密码连接服务端的
然后切记修改改密码文件的权限(密码文件权限属性要设得只有属主可读)
chmod 600 /etc/rsyncd.passwd
开始同步
rsync -vzrtopgu --progress --delete --password-file=/etc/rsyncd.passwd root@192.xx.xx.xx::test /www/w_demo
这个命令行中 -vzrtopg 里的
v 是 verbose,z 是压缩传输,r 是 recursive,topg 都是保持文件原有属性如属主、时间的参数。u 是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器的时钟的同步。
– progress 是指显示出详细的进度情况,
– delete 是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
root 为auth users设置的用户名
192.xx.xx.xx 为服务端ip
test 为服务端设置的模块名
/www/w_demo 为客户端存放的地址
注:若增加不同步文件(千万注意后面的空格)
例如忽略t.html:
rsync -vzrtopgu --progress --exclude 't.html' --password-file=/etc/rsyncd.passwd root@192.XX.XX.XX::test /www/w_demo
3.自动同步,客户端制定计划任务
安装crontab(一般自带)
yum install vixie-cron yum install crontabs
vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置
查看crontab服务状态
service crond status
写一个crontab自执行参数的配置文件
vi /tmp/rsyncd.sh
添加执行代码
crontab -e
在编辑器中加入crontab自执行参数的配置文件,* * * * * 参数为每分钟执行一次,相关说明见crontab文件或查询网上相关资料(注意空格)
* * * * * sh /tmp/rsyncd.sh
此时,自动同步完成。若互为备份,同理配置相关文件。
还没有评论,来说两句吧...