IT

Rsync文件数据同步

服务端搭建

  1. 安装rsync

    yum install rsync
  2. 修改rsync配置文件

    vim /etc/rsyncd.conf
  3. 配置内容

    uid = nobody
    gid = nobody
    use chroot = yes
    max connections = 10
    strict mode=yes
    pid file = /var/run/rsyncd.pid
    lock file=/var/run/rsync.lock
    log file=/var/log/rsyncd.log
    [backup]
           path = /home/shimida_upload/chat
           comment = backup file
           ignore errrors
           read only=no
           write only=no
           list=false
           uid=root
           gid=root
           auth users=Marko
           secrets file=/etc/rsync.password
  4. 新增密码文件

    vim /etc/rsync.password
  5. 密码文件内容 (用户名:密码)

    Marko:123456

客户端

  1. 用上面的方法安装rsync

  2. 执行rsync命令

    // 远程拉取到本地 backup就是上面服务器配置的backup 拉取到本地/data/test
    rsync -vzrtopg --progress Marko@192.168.0.100::backup  /data/test
    
    // 本地同步到远程(这个不需要输入密码)
    rsync -avz Marko@192.168.0.100::backup /data --password-file=/etc/rsync.passwor
  3. 远程拉取到本地是需要密码的 那如何自动拉取远程的到本地呢 写一个sh脚本

  4. 先安装expect

    yum install expect
  5. 编写sh脚本

    #!/bin/bash
    
    passwd='123456'
    
    /bin/expect <<-EOF
    
    set timeout -1
    
    spawn sudo rsync -vzrtopg --progress Marko@192.168.0.100::$1  /data/$1
    
    expect {
    
    "*oem" { send "$passwd\r" }
    
    }
    
    expect "*Password*"
    
    send "$passwd\r"
    
    expect eof
    
    EOF
  6. 如果不想用变量 想直接执行可以把第9行的命令修改一下

  7. 给sh文件加执行权限

    chmod +x rsync.sh
  8. 执行sh(backup是因为我写了变量 这样可以比较简单的调用多个存储)

    ./rsync.sh backup
  9. 如果想定时执行则使用crontab

    crontab -e
    
    增加一条命令
    
    // 该命令是每天4点执行一遍同步 如果有其他需求 可以去查下crontab的命令 下面有个crontab的图
    0 4 * * * /data/rsync.sh backup >> /data/backup.log

    2021042118331616190011961619001196880L1NOvK

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注