Linux服务器下文件信息同步
Linux服务器下文件信息同步
设定:服务端的Ip地址:192.168.1.88
客户端的IP地址:192.168.1.20
第一步: 服务端、客户端均安装rsync软件
# yum -y install rsync --安装rsync
第二步:服务端、客户端为了防止同步的时候文件因为防火墙导致传输失败关闭防火墙
# systemctl stop firewalld --临时关闭防火墙
# systemctl disable firewalld --永久关闭防火墙
第三步:服务端、客户端均关闭selinux
其中又两种方式(现场如果可以直接永久性关闭)
临时关闭:# setenforce 0
永久关闭:
# vim /etc/selinux/config
SELINUX=disabled --将enforcing改为disabled
# reboot --重启系统永久生效
第四步. 搭建Rsync服务(服务器192.168.1.88的操作)
1.打开该文件rsyncd.conf
# vim /etc/rsyncd.conf --文件最后添加一下内容
2.将下列内容填入到文件的最后记得命令行前边的#去掉
motd file=/etc/rsyncd.welcome # 定义指定的文件路径(不需要动,直接复制过来)
[test] # 参数组名称(需要变动,直接复制过来)
path=/data # 定义参数组同步目录路径,该路径就是文件的总路径,例如录音文件是/aa/bb/cc 该处的路径就是/aa即可
3.设置欢迎界面
vim /etc/rsyncd.welcome --手动建立自己定义的motd文件,并写上自定义的欢迎信息,只为了做测试
进入文件之后,将下边的内容复制进去即可:
****** _ Welcome to use rsync!_ ******
4:启动服务
# systemctl restart rsyncd.service --重新启动rsync服务
# netstat -ntlp | grep rsync --查看监听rsync服务的端口
# lsof -i:873 --rsync的端口为873
对应的界面是:
第五步:客户端操作192.168.10.20
1.通过命令行来访问服务器
rsync -v 192.168.1.88:: --查看rsync服务器同步路径名(注意服务器ip后面有两个冒号)
显示出来上边的图片即可服务启动成功
第六步:服务器192.168.1.88的操作
- #vim /etc/rsyncd.conf #打开此文件再进一步的服务配置
motd file = /etc/rsyncd.welcome
[test]
path = /data #此处上边已经处理好是录音文件的文件目录
[notes] # 参数组名称
path = /var/www/html # 设置rsync同步文件路径
list = false # 隐藏共享模块名称(test)
max connections = 1 # 设置同一时间内最大的链接数
log file = /var/log/rsyncd.log # 设置指定的日志文件路径
hosts allow = 192.168.1.20 # 此处是客户端的IP地址
access_times = 9:00-17:00 # 允许连接时间段,这是两者之间同步的时间端 - # systemctl restart rsyncd.service --重新启动rsync服务
第七步:Rsync + Inotify实时同步搭建完成远程实时同步
1.通过命令行来下载对应的软件包
# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
2.将文件解压
# tar xf ./inotify-tools-3.14.tar.gz -C /usr/src/ --解压
3.进入到解压的路径中
# cd /usr/src/inotify-tools-3.14/ --cd到解压的路径里
4.进行配置、编译、安装
./configure && make && make install
注意:这里可能会出现错误报错:可能是gcc没有安装。通过命令行:#yum install gcc即可,安装完成之后再执行配置、编译、安装的命令
5.检查是不是安装成功退出到最外边,之后通过命令来查询
# cd /
# ll /usr/local/bin
出现之后即可成功:
- ssh创建密钥来使得服务端可以访问客户端
# cd --切换到用户家目录
# ssh-keygen --执行该命令后,一直回车,会自动生成两个密钥文件
# ll /root/.ssh/ --两个密钥文件目录
id_rsa --本地密钥
id_rsa.pub --公共密钥
7.将6中生成的公共密钥id_rsa.pub复制给需要远程登陆的机子(即客户端)并改名为authorized_keys,命令行如下:
(1)将文件传输到对应的客户端的/root/.ssh文件夹下边(如果此处报错显示对方没有.ssh文件夹,直接去客户端192.168.1.20下边通过命令行# mkdir .ssh创建即可)
# scp /root/.ssh/id_rsa.pub 192.168.1.20:/root/.ssh/authorized_keys
(2)传输完成之后通过下边的命令行来测试
# ssh 192.168.1.20 --验证是否还需要输入密码,不需要输入密码就可以登陆说明密钥设置
成功
(3)完成之后通过exit退出,返回到服务端
# exit --退出远程登陆
8.开始写一个监听的脚本当录音文件夹下边有文件产生的时候,对应的客户端也更新文件,文件的同步的时长是一分钟
# vim /tmp/rsync_key.sh --写一个监听脚本
脚本内容:
#!/bin/sh
/usr/local/bin/inotifywait -mrq -e modify,attrib,move,create,delete /serveraa | while read file
do
rsync -a --delete /serveraa / 192.168.1.20:/clientcc /
echo “$file在date +'%F %T %A'
同步成功” >> /var/log/rsync.log
done
注意:其中被标记的三处地方需要修改其中serveraa是服务端的录音文件的存放地,其中的clientcc是客户端的录音文件的存放地
9. 启动脚本,实现rsync实时同步
# nohup sh -x /tmp/rsync_key.sh &
–使用nohup方式执行脚本,并放到后台执行
# jobs -l
--查看在后台运行的任务
注意:
如果要中止后台执行的任务,执行 kill -9 %x,-9为强制杀死,x为jobs任务号
如果执行 jobs -l 没有内容显示出来,则在 vim nohup.out 查看是否报错
测试:
服务器上创建文件或者目录,然后在客户端进行查看 ls /clientcc目录是否有同步。并查看服务器 cat /var/log/rsync.log 是否有同步成功信息,文件设置的是一分钟,等待一分钟后进行刷新
第八步:双向数据实时同步,反过来做一遍。