【完美】linux文件同步rsync+inotify(第一部分,rsync)

介绍


第二部分,inotify

点击打开链接

环境

系统:CentOS Linux 7 (Core)
源服务器:192.168.159.100
目标服务器:192.168.159.101(可以是多个)

目的:将源服务器的/home/rsync_data文件夹同步到目标服务器的/home/rsync_data

说明:由于系统不同安装方式也不同,本CentOS7系统自带rsync,并且不需要用xinted管理rsync

rsync

目标服务器

安装rsync

yum install rsync

配置rsync

vi /etc/rsyncd.conf

-------------------------------------------------------------

#日志文件位置,启动rsync后自动产生这个文件,无需提前创建

log file = /var/log/rsyncd.log

#pid文件的存放位置

pid file = /var/run/rsyncd.pid

#支持max connections参数的锁文件

lock file = /var/run/rsync.lock

#用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件

secrets file = /etc/rsync.pass

#rsync启动时欢迎信息页面文件位置(文件内容自定义)

motd file = /etc/rsyncd.Motd

#自定义模块名称

[rsync_file]

#rsync服务端数据目录路径

path = /home/rsync_file/

#模块名称与[data]自定义名称相同

comment = this is tutorial

#设置rsync运行权限为root

uid = root

#设置rsync运行权限为root

gid = root

#默认端口

port = 873

#默认为true,修改为no,增加对目录文件软连接的备份

use chroot = no

#设置rsync服务端文件为读写权限

read only = no

#不显示rsync服务端资源列表

list = no

#最大连接数

max connections = 200

#设置超时时间

timeout = 600

#执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开

auth users = user1,user2

#允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开(源服务器)

hosts allow = 192.168.159.100

#禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开

hosts deny = 192.168.159.99

--------------------------------------------------------------------

:wq!  #保存,退

方便复制
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsync.pass
motd file = /etc/rsyncd.Motd
[rsync_file]
path = /home/rsync_file/
comment = this is tutorial
uid = root
gid = root
port = 873
use chroot = no
read only = no
list = no
max connections = 200
timeout = 600
auth users = user1,user2
hosts allow = 192.168.159.100
hosts deny = 192.168.159.99

创建用户认证文件

vi /etc/rsync.pass

user1:123456

user2:111111

#格式:用户名:密码,可以设置多个,每行一个用户名:密码

:wq!  #保存,退出

设置文件权限

chmod 600 /etc/rsyncd.conf

chmod 600 /etc/rsync.pass

创建要同步的文件夹

mkdir /home/rsync_file

启动rsync服务

rsync --daemon --config=/etc/rsyncd.conf

源服务器

安装rsync

yum install rsync

查看系统是否已安装rsync

whereis rsync

出现下面的提示,说明已经安装

rsync: /usr/bin/rsync /usr/share/man/man1/rsync.1.gz

创建认证密码文件

vi /etc/passwd.txt

123456 #密码

:wq!  #保存,退出

chmod 600 /etc/passwd.txt

创建要同步的文件夹

mkdir /home/rsync_file

关闭防火墙(或开放873端口)

systemctl stop firewalld.service

启动rsync服务

rsync --daemon --config=/etc/rsyncd.conf

测试数据同步

mkdir /home/rsync_file/ceshi

rsync -avH --port=873 --progress --delete /home/rsync_file/ user1@192.168.159.101::rsync_file --password-file=/etc/passwd.txt

出现一下信息表示成功

sending incremental file list
./
ceshi/
sent 50 bytes  received 15 bytes  6.19 bytes/sec
total size is 0  speedup is 0.00

第二部分,inotify

点击打开链接

配置解释

字段描述
motd file/etc/rsyncd.Motd"motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的。
log file/var/log/rsyncd.log"log file"指定rsync的日志文件,而不将日志发送给syslog。
pid file/var/run/rsyncd.pid指定rsync的pid文件。
secrets file/etc/rsyncd.pass该选项指定一个包含定义用户名:密码对的文件。只有在"auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,需要限式指定一个。(例如:/etc/rsyncd.secrets)
syslog facility默认值:daemon指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。
comment 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。
path/home/rsync_file指定该模块的供备份的目录树路径,该参数是必须指定的。
use chroot默认值:yes。设置:no如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。
max connections默认值:0。设置:200指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。
lock file/var/run/rsyncd.lock指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。
read only默认值:yes。设置:no该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。
list默认值:yes。设置:no该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。
uid默认值:nobody。设置:root该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是"nobody"。
gid默认值:nobody。设置:root该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为"nobody"。
auth users 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
timeout默认值:0。设置:600通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说。
hosts allow192.168.159.100(源服务器)该选项指定哪些IP的客户允许连接该模块。默认是允许所有主机连接。
hosts deny192.168.159.99指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。
exlude 用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include。但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exlude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。
exlude from 指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exlude列表定义。
transfer logging 使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
include 用来指定多个由空格隔开的多个rsync并应该exlude的模式列表。这等同于在客户端命令中使用--include来指定模式,结合include和exlude可以定义复杂的exlude/include规则 。一个模块只能指定一个include选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include。
include from 指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。
strict modestrue该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。
ignore errors 指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IP错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。
ignore nonreadable 指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。
log format 通过该选项用户在使用transfer logging可以自己定制日志文件的字段。其格式是一个包含格式定义符的字符串
refuse options 通过该选项可以定义一些不允许客户对该模块使用的命令参数列表。这里必须使用命令全名,而不能是简称。但发生拒绝某个命令的情况时服务器将报告错误信息然后退出。如果要防止使用压缩,应该是:"dont compress = *"。
dont compress 用来指定那些不进行压缩处理再传输的文件,默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值