PS
推荐大家使用同机房,或者母鸡虚拟化。
要求
有两台CentOS 7服务器,其中A:192.168.1.100文件需要实时同步到B:192.168.1.200
安装rsync
lsyncd基于rsync,且要求rsync >= 3.1,可输入rsync -v查看当前版本,如果不符合要求,请参考:《CentOS升级rsync版本》,两台服务器A/B均要安装rsync
设置密钥登录
如果想要将A的数据同步到B,A必须拥有免密码登录B的权限,可以设置密钥登录来完成。只需要两条命令即可,下面的命令在A服务器执行:
#生成密钥文件ssh-keygen -t rsa #将公钥拷贝到Bssh-copy-id username@remote-server #测试ssh username@remote-server
username为B服务器用户名,remote-server为B服务器IP地址,如果服务器不是使用的22作为SSH端口,需要-p参数指定端口号。更多说明可参考:SSH无密码登录:只需两个简单步骤 (Linux)
安装epel仓库
CentOS 7内置的源并没有包括Lsyncd,可以自行编译安装Lsyncd,不过更简单的办法是先安装epel源,就可以直接yum安装了,以下命令再A服务器执行。
yum -y install epel-release
安装lsyncd并配置
如果已经安装了epel仓库,直接输入下面的命令安装lsyncd即可,一下命令在A服务器执行。
#安装lsyncd yum -y install lsyncd #查看lsyncd版本 lsyncd --version
安装完成后配置文件位于/etc/lsyncd.conf,会看到如下的内容,其中--是注释符。
继续输入命令lsyncd -nodaemon /etc/lsyncd.conf运行查看下是否有报错,如果有报错根据报错情况检查修改,如果没有报错直接退出后输入命令:systemctl start lsyncd启动lsyncd即可。
部分参数说明
settings为全局配置,部分参数如下:
logfile:日志文件路径
statusFile:进程路径
insist:继续运行,即使有失败的目标。
statusInterval:多少秒写入文件,默认是10s
sync为同步配置,部分参数如下:
source:本地文件目录
host:远程服务器地址
targetdir:远程目标目录
port:目前主机SSH端口号,默认为22
相关命令
#启动 systemctl start lsyncd #停止 systemctl stop lsyncd #重启 systemctl restart lsyncd #设置开机自动启动 systemctl enable lsyncd
总结
以上方法在CentOS 7系统测试,如果是CentOS 6系统可能部分地方略有不同,但流程和步骤都一样。
lsyncd是基于inotify + rsync的开源同步软件,支持增量同步,与Resilio Sync相比优势是更加安全、占用资源更低,多种参数自定义配置更加方便。劣势是配置要比Resilio Sync麻烦一点,如果多台服务器的情况下速度可能不及Resilio Sync,因为Resilio Sync使用了P2P分享。
佐佐网 » 海洋被黑解决办法(二)土豪版