zoukankan      html  css  js  c++  java
  • Linux运维: Rsync同步数据(ubuntu16.04+windows10)

    rsync同步数据

    -环境:Linux (ubuntu16.04) + windows10

    Linux:

    1. 安装
      sudo apt-get install rsync
      rsync --version 查看是否已安装, 并查看版本

    2. 配置
      主要三个配置文件. 默认不存在(/etc/..)
      ① rsyncd.conf
      ② rsyncd.secrets
      ③ rsyncd.motd (rsync服务器信息)

    • 2.1 创建配置文件
      cd /etc
      mkdir rsyncd
      vi rsyncd.conf
    
    rsyncd.conf内容如下:
        #告诉进程写到 /var/run/rsyncd.pid 文件中
        pid file = /var/run/rsyncd.pid
        lock file =/var/run/rsyncd.lock
    
        #日志文件
        log file =/var/log/rsyncd.log
        log format = %t %a %m %f %b
        syslog facility = local3
    
        #服务器响应消息文件
        motd file = /etc/rsyncd/rsyncd.motd
    
        #指定运行端口,默认是873
        port = 8877
    
        #指定服务器IP地址 可不写默认本地
        address = 192.168.56.102
    
        #服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody
        uid = root
        gid = root
    
        #如果"use chroot"指定为yes,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为yes
        use chroot = no
    
        #客户端最多连接数
        max connections = 5
        exclude = lost+found/
        transfer logging = yes
        timeout = 900
        ignore nonreadable = yes
        dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
    
        #要同步的模块(可写多个,并设置不同用户)
        [test_data]
        #指定文件目录所在路径
        path =  /home/test
    
        #list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。如果你不想列出来,就no ;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。你自己知道就行了
        list=no
    
        #指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作,以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。
        ignore errors
    
        #如果为yes,表示只读本地文件就无法同步到服务器
        read only = no
    
        #允许连接的ip,在演示中使用的云服务器就直接写*,表示无限制 如果要规定ip或者ip段(10.1.4.0/255.255.255.0)需要进行其他配置
        hosts allow=10.1.4.0/255.255.255.0
        #hosts deny=*
    
        #auth users 是必须在服务器上存在的真实的系统用户,如果你想用多个用户,那就以,号隔开
        auth users = root
    
        #密码存在rsyncd.passwd文件里
        secrets file = /etc/rsyncd/rsyncd.secrets
    
    • 2.2 配置rsyncd.secrets文件
      文件内容 username:password
      文件必须设置为只有所有者可读写权限 600
      chmod 600 ./rsyncd.secrets
      如果所属用户不是root 用chown修改
      chown -R root ./rsyncd.secrets

    • 2.3 rsyncd.motd
      内容如下: 连接成功信息提示

      ++++++++++++++++++++++++++++++++++++++
        welcome to rsync. 
      ++++++++++++++++++++++++++++++++++++++
    
    1. 启动rsync服务器
    • 3.1 开启宽口 并设置防火墙通道tcp允许
      iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8873 -j ACCEPT

    • 3.2 启动服务器
      rsync --daemon --config=/etc/rsyncd/rsyncd.conf

    • 3.3 检查是否启动
      ps -aux | grep rsync

      检查是否启动端口监听:
      netstat -anp | grep rsync


    windows

    windows客户端下载 提取码:fg6h

    注意: 密码文件目录, 本地目录要用POSIX风格的写法:
    /cygdrive/f/cwRsync/rsyncd.pwd f表示F:盘

    1. 安装cwRsync windows客户端

    配置环境变量 cwRsync/bin --> path

    1. 在cwRsync目录下建 密码文件 rsyncd.pwd (保证文件只有所有者可读写600权限)

    内容: 只写密码即可

    测试拉取服务器数据到本地(前提 步骤1需要配置 在终端任何目录方可运行):

    rsync --port=8873 -avzP root@192.168.56.102::test_data /cygdrive/d/data --password-file=/cygdrive/f/cwRsync/rsyncd.pwd

    排错

    ① ERROR: password file must not be other-accessible
    服务器跟客户端两边的密码文件都必须是 600 权限
    windows10: 修改文件权限为可读写, 所属用户只有当前登录用户
    查看当前用户(推荐使用cmder终端):

    λ whoami
    desktop-2018whjlenovo
    
    λ echo %username%
    Lenovo
    
    # 使用cwRsync提供的工具
    chomd.exe -c 600 /cygdrive/f/cwRsync_15110/rsync.pwd
    chown.exe Lenovo /cygdrive/cwRsync_15110/rsync.pwd
    

    其他事项

    如果文件权限不可修改(windows10), 使用一下方法解决
    通过文件右键查看属性--> 安全 --> 查看用户权限

    • 目录右键>属性>安全
      • 点击>高级> 禁用继承==>将以继承的权限 转换为此对象的显式权限
    • 目录右键>属性>安全
      • 点击==>编辑
      • 删除所有组或用户名下面的信息
      • 点击>添加>高级>立即查找>选中需要使用的用户(一般为当前用户)==>双击或者选中后确定
      • 将选中的用户勾选 读写 权限
      • 一路确定

    参考资料:
    windows chomod 600
    Rsync数据同步工具
    mac Rsync参考

  • 相关阅读:
    16 继续讲C#中的条件执行。if...else if...else
    15 C#中的条件执行,if else
    14 C#编程中的逻辑运算
    13 继续C#中的方法,带返回值的方法介绍
    12 C#中的方法
    在使用实体框架(Entity Framework)的应用中加入审计信息(Audit trail)跟踪数据的变动
    11 在C#中写文件
    10 在C#中读取文件
    9 在C#控制台程序(console)中让用户输入
    大数据组件图谱
  • 原文地址:https://www.cnblogs.com/panlq/p/10598528.html
Copyright © 2011-2022 走看看