如何配置rsync服务端

公司里有台内网的机器会每天从阿里云OSS上同步日志文件回来存储到本地做分析,因为本地的磁盘比较小,因此实际上下载的本地的文件需要先同步到另外一台容量更大的、专门用于做存储的机器上。为此特意折腾了一下rsync,以便用它来实现现成的增量文件同步的机制。在这里记录一下摸索出来的配置文件,以备不时之需。

通过命令man rsyncd.conf可以了解到rsync作为daemon模式启动所需要的配置文件的语法,可以理解为就是一个INI语法的配置文件。我只琢磨了最基本的配置,下面还原一下这个过程。首先是需要为rsync配置所谓的模块,可以理解为就是rsync服务端受到文件后写入的位置。我设置了一个名为log的模块,配置如下

[log]
    path = /app/data/log
    comment = App logs

将上述内容保存到/etc/rsyncd.conf文件中,就可以启动rsync的服务端了,命令如下

rsync --daemon

之后在另一台机器上使用rsync向这台机器推送文件时发现会报错,因此再到服务端配置了一下日志文件,以便查看发生了什么事情。修改后的配置为

log file = /tmp/rsync.log
max verbosity = 1
[log]
    path = /app/data/log
    comment = App logs

重新启动后再次推送文件到服务端,查看/tmp/rsync.log可以发现,是由于log模块的路径被设置为了只读导致的,因此需要指定一下read only的选项,修改后的配置如下

log file = /tmp/rsync.log
max verbosity = 1
[log]
    path = /app/data/log
    comment = App logs
    read only = false
    write only = false

再次重启后尝试推送文件,还是不行,抛出的是permission denied的错误。借助于搜索引擎的力量,才知道原来是因为rsync默认启动的模式下没有权限写入文件导致的,为此需要设置rsync的giduid选项,最终结果如下

gid = *
log file = /tmp/rsync.log
max verbosity = 1
uid = root
[log]
    path = /app/data/log
    comment = App logs
    read only = false
    write only = false

这样一来总算是推送成功了。由于要一次性同步一个目录,并且还要求在目标目录中重建原来的目录结构,因此最终我在推送端添加了命令行选项-az --relative

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,199评论 19 139
  • 一、什么是rsync rsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具。适用...
    逗比punk阅读 2,485评论 0 1
  • 测试环境: rsync-server:192.168.1.132 rsync-client:192.168.1.2...
    lailai900201阅读 2,395评论 0 10
  • 昨日果腹群山之物 今日却难容滴水 列车飞驰而过 奔行千里 带不走一丝心绪 太阳总会升起 仁爱地照耀着每一片土地 却...
    牛魔王不是坏人阅读 180评论 0 0
  • 爱自己就是自己把自己心里的坑填上。不再把另一个人强行塞进去,以求表面的安全感的完整感。 爱自己就是从现在起把脑资源...
    懒人的懒阅读 636评论 0 4