rsync服务器的配置

上一篇文章介绍了rsync的基本概念、命令、和使用,本文将讲解使用rsync服务进行不同机器之间的文件同步。更多文章请参考rsync专题

安装

配置

一下配置文件,若不存在则新增即可.

  • 修改/etc/default/rsync

    1
    RSYNC_ENABLE=inted   #false改true或者inted
  • 修改/etc/xinetd.d/rsync

    将disable=yes改成disable=no

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    service rsync
    {
    disable = no
    socket_type = stream
    wait = no
    user = root
    server = /usr/bin/rsync
    server_args = --daemon
    log_on_failure += USERID
    }
  • 修改/etc/rsyncd.conf

    修改/etc/rsyncd.conf,主要包括账号密码文件路径、同步路径等内容,分为全局配置和模块配置,每个需要同步的文件夹可以配置为一个模块。可以使用rsync –daemon的方式运行守护进程,这里使用xinetd

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #全局配置
    # = 后面的值可根据自己的实际情况更改
    # pid file 守护进程pid文件
    # port 守护进程监听端口,可更改,由xinetd允许rsyncd时忽略此参数
    # address 守护进程监听ip,由xinetd允许rsyncd时忽略此参数
    # 我们使用xinetd 运行守护进程
    pid file = /usr/local/var/run/rsyncd.pid
    # port = 873
    # address = 192.168.1.2
    #rsyncd 守护进程运行系统用户全局配置,也可在具体的块中独立配置,
    uid = root
    gid = root
    #允许 chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录下
    #chroot为yes时必须使用root权限,且不能备份path路径外的链接文件
    use chroot = no
    #只读
    read only = no
    #只写
    write only = no
    #允许访问rsyncd服务的ip,ip端或者单独ip之间使用空格隔开
    hosts allow = *
    #不允许访问rsyncd服务的ip,*是全部(不涵盖在hosts allow中声明的ip,注意和hosts allow的先后顺序)
    #hosts deny = *
    #客户端最大连接数
    max connections = 5
    #欢迎文件路径,可选的,在客户端链接成功后会显示欢迎信息
    #motd file = /etc/rsyncd/rsyncd.motd
    #日志相关
    # log file 指定rsync发送消息日志文件,而不是发送给syslog,如果不填这个参数默认发送给syslog
    # transfer logging 是否记录传输文件日志
    # log format 日志文件格式,格式参数请google
    # syslog facility rsync发送消息给syslog时的消息级别,
    # timeout连接超时时间
    log file = /usr/local/logs/rsyncd.log
    transfer logging = yes
    log format = %t %a %m %f %b
    syslog facility = local3
    timeout = 300

    #模块 模块名称必须使用[]环绕,客户端要访问data1,则地址应该是data1user@address::data1
    [data1]
    #模块根目录,必须指定
    path=/home/test
    #是否允许列出模块里的内容
    list=yes
    #忽略错误
    #ignore errors
    #模块验证用户名称,可使用空格或者逗号隔开多个用户名
    auth users = data1user
    #模块验证密码文件 可放在全局配置里
    secrets file=/etc/rsyncd.secrets
    #注释
    comment = some description about this moudle
    #排除目录,多个之间使用空格隔开
    #exclude = test1/ test2/
  • 配置密码文件

    新建密码文件/etc/rsyncd.secrets(与上述文件的secret file一致)

    1
    data1user:password
  • 配置文件授权

    密码文件必须赋予600的权限

    1
    chmod 600 /etc/rsyncd.*
  • 启动服务

    1
    2
    3
    4
    5
    #重启守护进程
    service xinted restart
    #检查是否启动成功
    netstat -an | grep 873
    #显示 tcp6 0 0 :::873 :::* LISTEN

使用

根据上述配置,可以本地建立密码文件pwd.secrets(随便命名),内容为

1
password

  • 获取远程文件

    1
    rsync -avz --password-file=pwd.secrets data1user@xxx.xx.xx.xx::data1 /home/data

    上述代码将远程的/home/test/中的内容拷贝至/home/data中,注意:服务器配置文件中path无论是否以/结尾,都不会复制目录本身,只会复制文件夹内的内容

    模块名可以加子目录,data1/subdir 可以复制整个subdir目录,subdir必须是位于配置文件的path指定的目录中

  • 传输本地文件到远程机器

    1
    rsync -avz --password-file=pwd.secrets /home/data/ data1user@xxx.xx.xx.xx::data1

    本地的data内的文件被传输到/home/test/中。若本地路径写为/home/data没有/,则整个data目录上传至/home/test/

  • 列出远程文件

    1
    rsync -v --password-file=pwd.secrets rsync://data1user@xxx.xx.xx.xx/data1/

    or

    1
    rsync -v --password-file=pwd.secrets data1user@xxx.xx.xx.xx::data1/
Song wechat
扫一扫,关注微信公众号,订阅我的博客
扫码领红包,支持走一波