Centos 安装Rsync笔记

 rsync是linux下的文件同步服务,功能简单来说就是服务端打开873端口,客户端连接这个端口,并对服
务器端配置的目录进行同步,可以理解为客户端对比服务端资源后,对增量或者差异的数据进行增删改操作,
功能支持上传或下载对比,也就是远程数据对比本地数据而后对远程数据进行增删改操作,以及本地数据比对
远程数据进行增删改操作。
    它的特性如下:
        可以镜像保存整个目录树和文件系统。
        可以很容易做到保持原来文件的权限,时间,软硬链接等等。
        无需特殊权限即可安装。
        快速:第一次同步rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据过程
    中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
        安全:可以使用scp,ssh等方式来传输文件,当然也可以通过直接的socket连接。
        支持匿名传输,以方便进行网站镜像。

安装:yum -y install rsync
使用rsync --version命令查看一下安装的版本

1)配置rsync服务
配置rsync服务器的步骤
    首先要选择服务器启动方式
        对于负荷较重的rsync服务器应该使用独立运行方式
        对于负荷较轻的rsync服务器应该使用xinetd运行方式
    创建配置文件rsyncd.conf
    对于非匿名访问的rsync服务器还要创建认证口令文件
    1.1以xinetd运行rsync服务
        CentOS默认以xinetd方式运行rsync服务,rsync的xinetd配置文件/etc/xinetd.d/rsync,
        默认内容如下:
        # default: off
        # description: The rsync server is a good addition to an ftp server, as it \
        #	allows crc checksumming etc.
        service rsync
        {
	        disable	= yes
	        flags		= IPv6
	        socket_type     = stream
	        wait            = no
	        user            = root
	        server          = /usr/bin/rsync
	        server_args     = --daemon
	        log_on_failure  += USERID
        }

        注意将disable = yes改成disable = no
        然后重启xinetd
            /etc/init.d/xinetd restart

    1.2独立运行方式启动rsync服务
        /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
        等价于
        rsync --daemon
        
        添加到开机启动项中:
            echo "rsync --daemon &" >> /etc/rc.local

        查看8173端口是否起来:
            netstat -apn | grep 8173


2)配置文件/etc/rsyncd.conf由全局配置和若干模块配置组成。配置文件的语法为:
    模块以[模块名]开始
    参数配置行的格式是name = value,其中value可以有两种数据类型:
        字符串(可以不用引号定界字符串)
        布尔值(1/0或yes/no或true/false)
    以#或;开始的行为注释
    \为续行符
例如:
    strict modes = no
    uid = 0
    gid = 0
    port = 8173
    list = no
    max connections = 500

    motd file = /etc/rsyncd.motd
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsyncd.log

    [rsync_wall]
    path = /people/monitor_wall
    read only = false
    transfer logging = yes
    list = no
    hosts allow = *
    use chroot = no

    # 全局参数
    strict modes = no # 是否检查口令文件的权限,为yes则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。
    uid = 0  #以指定的UID传输文件
    gid = 0  #以指定的GID传输文件
    port = 8173 # 默认端口873,这里最好改为1024以上的端口号
    list = no # 不允许列清单
    max connections = 500 # 最大连接数

    motd file = /etc/rsyncd.motd # 指定一个消息文件,当客户连接服务器时该文件的内容显示给客户。
    pid file = /var/run/rsyncd.pid # rsync 的守护进程将其 PID 写入指定的文件。
    lock file = /var/run/rsyncd.lock # 锁文件的存放位置
    log file = /var/log/rsyncd.log # 指定 rsync 守护进程的日志文件,而不将日志发送给 syslog。

    # 模块参数
    [rsync_wall]
    path = /people/monitor_wall # 指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的。
    read only = false # 指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。
    transfer logging = yes # 使 rsync 服务器将传输操作记录到传输日志文件
    list = no # 指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为 false,可以创建隐藏的模块。(默认true)
    hosts allow = * # 用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝。(默认*则为全部都可以访问)
    use chroot = no # 若为 true,则 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限,并且不能备份指向 path 外部的符号连接所指向的目录文件。

3)客户端
    安装:
        Ubuntu: sudo apt-get install rsync
        Centos: sudo yum -y install rsync
    终端telnet rsync服务
        telnet 10.96.9.223 8173
    若telnet不上,可能是服务器端防火墙限制了
        # iptables -A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 8173 -j ACCEPT
        # iptables -A INPUT -p tcp -m tcp --dport 8173 -j DROP
    
    场景一:将服务器上的某个模块的文件同步到本地目录(没有目录会创建)下
        rsync -avzP --port=8173 root@10.96.9.223::rsync_wall /home/hdic/test
        
        说明:
        -a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;
            -p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;
            -o 保持文件原有属主;-D 相当于块设备文件;
        -z 传输时压缩;
        -P 传输进度;
        -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
    
    场景二:将服务器上的某个模块的文件同步到本地目录下,如果本地目录下文件在服务器上不存在,则会删除
        rsync -avzP --delete --port=8173 root@10.96.9.223::rsync_wall /home/hdic/test

    场景三:将本地test目录下的文件同步到rsync服务rsync_wall模块的test(若没有test目录则创建)目录下
        rsync -avzP --progress --no-owner --no-group --contimeout=30 --timeout=50 /home/hdic/test rsync://10.96.9.223:8173/rsync_wall


    --exclude=.svn/ --exclude=WEB-INF/ 过滤svn和WEB-INF目








a. 基本模块参数
参数	说明	默认值
path 	指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的。 	无
comment 	给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。 	无

b. 模块控制参数
参数	说明	默认值
use chroot 	若为 true,则 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限,并且不能备份指向 path 外部的符号连接所指向的目录文件。 	true
uid 	指定该模块以指定的 UID 传输文件。 	nobody
gid 	指定该模块以指定的 GID 传输文件。 	nobody
max connections 	指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。 	0(没有限制)
lock file 	指定支持 max connections 参数的锁文件。 	/var/run/rsyncd.lock
list 	指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为 false,可以创建隐藏的模块。 	true
read only 	指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。 	true
write only 	指定是否允许客户下载文件。若为 true 则不允许下载;若为 false 并且服务器目录也具有读权限则允许下载。 	false
ignore errors 	指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作,以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。 	true
ignore nonreadable 	指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的。 	false
timeout 	该选项可以覆盖客户指定的 IP 超时时间。从而确保 rsync 服务器不会永远等待一个崩溃的客户端。对于匿名 rsync 服务器来说,理想的数字是 600(单位为秒)。 	0 (未限制)
dont compress 	用来指定那些在传输之前不进行压缩处理的文件。该选项可以定义一些不允许客户对该模块使用的命令选项列表。必须使用选项全名,而不能是简称。当发生拒绝某个选项的情况时,服务器将报告错误信息然后退出。例如,要防止使用压缩,应该是:”dont compress = *”。 	*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

c. 模块文件筛选参数
参数	说明	默认值
exclude 	指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式。 	空
exclude from 	指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义。 	空
include 	指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。这等同于在客户端命令中使用 –include 来指定模式 。 	空
include from 	指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义。 	空

    一个模块只能指定一个exclude 参数、一个include 参数。
    结合 include 和 exclude 可以定义复杂的exclude/include 规则 。
    这几个参数分别与相应的rsync 客户命令选项等价,唯一不同的是它们作用在服务器端。
    关于如何书写规则文件的内容请参考http://www.howtocn.org/rsync:use_rsync。

d. 模块用户认证参数
参数	说明	默认值
auth users 	指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。用户名和口令以明文方式存放在 secrets file 参数指定的文件中。 	(匿名方式)
secrets file 	指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用。 	空
strict modes 	指定是否监测口令文件的权限。若为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。 	true

    rsync 认证口令文件的权限一定是 600,否则客户端将不能连接服务器。
    rsync 认证口令文件中每一行指定一个 用户名:口令 对,格式为:

    username:passwd

    一般来说口令最好不要超过8个字符。若您只配置匿名访问的 rsync 服务器,则无需设置上述参数。

e. 模块访问控制参数
参数	说明	默认值
hosts allow 	用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝。 	*
hosts deny 	用一个主机列表指定哪些主机客户不允许连接该模块。 	空

客户主机列表定义可以是以下形式:

    单个IP地址。例如:192.168.0.1
    整个网段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0
    可解析的单个主机名。例如:centos,centos.bsmart.cn
    域内的所有主机。例如:*.bsmart.cn
    “*”则表示所有。
    多个列表项要用空格间隔。

f. 模块日志参数
参数	说明	默认值
transfer logging 	使 rsync 服务器将传输操作记录到传输日志文件。 	false
log format 	指定传输日志文件的字段。 	”%o %h [%a] %m (%u) %f %l”

设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“。
可以使用的日志格式定义符如下所示:

    %a - 远程IP地址

    %h - 远程主机名

    %l - 文件长度字符数

    %p - 该次 rsync 会话的 PID

    %o - 操作类型:”send” 或 “recv”

    %f - 文件名

    %P - 模块路径

    %m - 模块名

    %t - 当前时间

    %u - 认证的用户名(匿名时是 null)

    %b - 实际传输的字节数

    %c - 当发送文件时,记录该文件的校验码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值