Published on

Rsync定时文件同步

Authors
  • avatar
    Name
    Pumpkinor

适用于文件体积大,数量多的场景下 相对较为可靠的文件同步方案

解决方案:

服务端(Server:IP-192.168.1.99)

服务端用于接收和备份客户端的文件,需要设置账户密码,开放容器 22 端口和 873 端口。

ref:

官方镜像:
https://github.com/rendam/docker-image-rsync-server
SSH通信案例:
https://blog.csdn.net/lhc198623/article/details/87862381

安装配置

rsync-server 安装前准备
  1. 宿主机 Host 文件添加客户端 ip
   127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
   ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
   192.168.1.100 rsync_cliner_01
  1. 新建/etc/rsync.secrets 文件并设置密码,文件权限设置为 600
/etc/rsync.secrets内容为
用户名:密码
如:
root:12345
  1. 新建/etc/rsyncd.conf 文件,文件权限设置为 600
pid file = /var/run/rsyncd.pid
log file = /dev/stdout
timeout = 300
max connections = 10
port = 873

    [data]
        uid = root
        gid = root
        hosts deny = *
        # 客户端的ip要写到这里
        hosts allow = 192.168.0.0/16 172.16.0.0/12 127.0.0.1/32
        read only = false
        path = /data
        comment = /data directory
        auth users = root
        secrets file = /etc/rsyncd.secrets
使用 Docker 安装 rsync-server
docker pull apnar/rsync-server

docker run -d \
--restart always \
-p 22:22 \
-p 873:873 \
-v /home/slave/data:/data  \
-v /root/.ssh/:/root/.ssh/ \
-v /etc/rsync.secrets:/etc/rsync.secrets \
-v /etc/rsyncd.conf:/etc/rsyncd.conf \
--name rsync-server \
apnar/rsync-server

参数详解
-p 222:22 映射容器远程连接端口
-p 873:873 映射容器rsync端口
-v /home/slave/data:/data 映射备份文件夹存放目录
-v /root/.ssh/:/root/.ssh/ 映射ssh秘钥信息目录 (可以根据你宿主机文件的位置更改)
-v /root/rsync.secrets:/root/rsync.secrets 映射rsync.secrets文件 (可以根据你宿主机文件的位置更改)
-v /root/rsyncd.conf:/root/rsyncd.conf 映射rsyncd.conf文件 (可以根据你宿主机文件的位置更改)
–-name rsync-server 容器名称
apnar/rsync-server 镜像名称

客户端(Client:IP-192.168.1.100)

ref:

参考文档
官方镜像: https://hub.docker.com/r/eeacms/rsync
Linux Crontab语法: https://blog.csdn.net/qq_15821487/article/details/120154421
Rsync参数详解: https://blog.csdn.net/wlh525/article/details/113310310

安装配置

rsync_client 安装前准备
  1. 新建/etc/rsync.password 文件并设置密码,文件权限设置为 600
/etc/rsync.password内容为
密码
如:
12345
使用 Docker 安装 rsync_client
docker pull eeacms/rsync

docker run -d --name=rsync_client01 \
-v /data:/data \
-v /etc/rsync.password:/etc/rsync.password \
-e CRON_TASK_1="*/1 * * * * rsync -atuz --progress /data/ rsync://root@192.168.1.99:873/data --password-file=/etc/rsync.password" \
         eeacms/rsync client

参数详解
-d 守护式进程启动
–-name 容器名称
-v /data:/data 映射备份文件
-v /etc/rsync.password:/etc/rsync.password 映射密码文件
-e CRON_TASK_1=“*/1 * * * * rsync -atuz --progress --delete /data/ rsync://user@server_ip:873/data/tongbu1 --password-file=/etc/rsync.password” 开启一个名为定时任务1且1分钟执行一次的同步任务
eeacms/rsync client 启动镜像名为eeacms/rsync为客户端程序启动

后续调整

  1. 在启动 rsync-client 后,从日志中找到 ssh-key
如:
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
Please add this ssh key to your server /home/user/.ssh/authorized_keys
================================================================================
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7Eul69NPjQnrDSX7Ghu0KRCSIyTeXnLtibxGmxYW7tAbkHeWDFY5bsMz79Ft+gUtf58tUa5Yuuek3zD9+efA5P4193FHDeIyAAApqycTCT/MQDdsEDBuLY7SeZ9xGdnaVpXId+khInAuZwEiqP2FWvNtm+cs9n97hzOFFWgFSHWxpPZVFJQOqF7fpD0tnSAQWLXm0RuNMP7YMroSwCgaP8H+MhFWWO4TbGiRnyInHoDxz++SU6K3n4686yYHxVnzQ6eTmK7LmjCZmiA7NpcJmycrGbyDgXVHI1v2GEuJmZG6NtOUjwRAkTkJNqlVnDxauH7qwcq4ZlBGwsVIxn2Uw0NMTNtUhuf0lIwry6bW8FQJYYsaZCPpNkM/AZTve/1KmZzX50xuzPNJ3AlhR4kBXBNHK6S9fzC4bSBMaKKXUKAKVoxg8uMQoQYF5UnMCtz1t84xzU+digxLztviQlfg8ctS+3VBuYrzGMUp1c5OcPXkCCHiXnKVorWeRDQZyE= root@2149dc162d2a
  1. 在 rsync-server 的宿主机中,新建/home/user/.ssh/authorized_keys 文件,并将上面的 ssh-key 填写进去