参考链接:20170723-Ubuntu配置rsync服务 - SegmentFault 思否
使用inotify rsync实现linux文件批量实时更新
亲测可用
rsync(remote synchronize)是类unix系统下的实现远程数据同步功能的工具,它的特性如下:
- 可以镜像保存整个目录树和文件系统
- 可以很容易做到保持原来文件的权限、事件、软硬链接等信息
- 无需特殊权限即可安装
- 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
- 安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
- 支持匿名传输,以方便进行网站镜象。
安装
在Ubuntu(服务端)下安装rsync通过以步骤可以实现:
sudo apt-get install rsync xinetd
默认情况下Ubuntu安装了rsync,因此只需安装xinetd
服务器端配置
1.编辑/etc/default/rsync
启动rsync作为使用xinetd的守护进程
# 打开rsync
sudo vim /etc/default/rsync
# 编辑rsync
RSYNC_ENABLE=inetd
2.创建/etc/xinetd.d/rsync
, 通过xinetd使rsync开始工作
# 创建并打开文件
sudo vim /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
}
3.创建/etc/rsyncd.conf
,并填写配置信息
# 创建并打开文件
sudo vim /etc/rsyncd.conf
# 编辑配置信息
max connections = 2
log file = /var/log/rsync.log
timeout = 300
[share] # 模块名
comment = Public Share
# path为需要同步的文件夹路径
path = /home/share
read only = no
list = yes
uid = root
gid = root
# 必须和 rsyncd.secrets中的用户名对应
auth users = user
secrets file = /etc/rsyncd.secrets
这里的users = user 是你自己设置的用户名,我设置的是:users = lucifer
这里的path = /home/share 是你自己设置的共享的文件夹,我设置的是:path = /home/lcf/share
4.创建/etc/rsyncd.secrets
,配置用户名和密码.
# 创建并打开文件
sudo vim /etc/rsyncd.secrets
# 配置用户名和密码,密码可以任意设置
user:password
这里的user:password 是你自己设置的用户名,4里面的use需要和3中的保持一致:我设置的是:lucifer= 123456
5.修改rsyncd.secrets
文件的权限
sudo chmod 600 /etc/rsyncd.secrets
6.启动/重启 xinetd
sudo /etc/init.d/xinetd restart
Window客户端配置
由于我用的系统是windows,所以需要在windows上安装rsync的客户端cwRsync
1.下载并安装cwRsync
2.安装后将其添加到环境变量path中,我的cwRsync
安装在D:\cwRsync
目录下,将D:\cwRsync\bin
添加到环境变量path中
Ubuntu 客户端配置
在客户端运行下面的命令检查,确认rsync
配置成功
# user是在服务器中rsyncd.secrets文件中配置的用户名
# xx.xx.xx.xx 是服务器的ip地址,也可以填写服务器对应的域名
# share 是rsyncd.conf中定义的模块
rsync user@xx.xx.xx.xx::share
输入密码后,如果输出以下类似内容,说明配置成功
drwxr-xr-x 4096 2006/12/13 09:41:59 .
drwxr-xr-x 4096 2006/11/23 18:00:03 folders
同步
1.将本地文件同步至服务器
# 将当前目录下public路径下的全部内容,同步至服务器,服务器的同步路径在rsyncd.conf中指定
rsync -av ./public/ user@xx.xx.xx.xx::share
2.将服务器文件同步至本地
rsync -cvazu --progress user@xx.xx.xx.xx::share /rsyn
采用shell 保存
#!/bin/bash
# password:123456
cd /data2/home/lichaofei/
rsync -cvazu --progress lucifer@xx.xx.xx.xx::share syncDest