配置分为两大部分,客户端和服务端
一.服务器端配置
联网安装防护进程:
yum -y install xinetd
编译安装rsync3.1.2 官方网站https://rsync.samba.org/
解压缩包并安装
tar -zxvf rsync-3.0.9.tar.gz
tar -zxvf rsync-patches-3.0.9.tar.gz
cd rsync-3.0.9 #定位到文件
./configure #选中文件夹下的configure文件
make
make install
*注:离线状态下,会提示checking for gcc...no等信息。原因是缺少gcc环境包。需配置本地yum,安装该环境包,地址:/etc/yum.repos.d/CentOS-Media.repo
将文件中原有代码注释掉(也可清理掉该文件夹下其他配置文件,不包括文件夹,不推荐这样),添加本地配置并将iso系统光盘解压至目录/home/centos7/下
[LocalYum]
name=LocalYum
baseurl=file:///home/CentOS7.2/Media/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
然后,重新清理
yum clean all
yum makecache
即可使用本地的yum进行基础的依赖包安装
*同时也可以在kvm虚拟机中选择虚拟磁盘的方式挂载yum,需先在该虚拟机所在实体机的服务器放入系统盘,在kvm虚拟机中选择并找到iso文件,同时虚拟机中的系统配置好CentOS-Media.repo
[LocalYum]
name=LocalYUm
baseurl=file:///mnt/cdrom/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
后还需使用命令重新挂载一下,若使用KVM虚拟机中导入源也需要重新挂载iso文件。
mount -t auto /dev/cdrom /mnt/cdrom
设置防护进程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掉服务,重新执行以下代码)
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
此时,自动同步完成。若互为备份,同理配置相关文件。