【Docker容器管理】Rsync实现主从文件卷定时同步

文章目录

  • 文档背景
  • 服务端(Slave-Server)
    • 环境准备
  • 客户端(Master-Client)
    • 环境准备

文档背景

由于应用服务器里静态文件数量特别大,所以需要对文件卷进行同步备份。使用Docker + Rsync
目的:

  • 将客户端目录备份到服务端目录中
  • 减小宿主机侵占性
  • 提高文件传输的性能

下面是使用的Rsync通信的方法来定时同步文件夹的

服务端(Slave-Server)

服务端用于接收和备份客户端服务器的文件,需要设置账户密码,开放容器22端口和rsync端口。可以让客户端进行Rsync通信和SSH通信来使得文件同步

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

环境准备

  • 使用Docker安装rsync-server
docker pull apnar/rsync-server
  • 构建容器

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

docker run -d \
--restart always \
-p 222:22 \
-p 873:873 \
-v /home/yyl/RsyncSlave/:/data  \
-v /root/.ssh/:/root/.ssh/ \
-e USERNAME=user \
-e PASSWORD=pass \
--name rsync-server \
apnar/rsync-server

客户端(Master-Client)

参考文档
官方镜像: 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密码
echo "pass" >/etc/rsync.password
chmod 600 /etc/rsync.password
  • 使用Docker安装 eeacms/rsync
docker pull eeacms/rsync
  • 构建容器

参数详解
-d 守护式进程启动
–name 容器名称
-v /data/yyl/RsyncMaster/tongbu1:/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为客户端程序启动

docker run -d --name=rsync_client01 -v /data/yyl/RsyncMaster/tongbu1:/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" \
         eeacms/rsync client

docker run -d --name=rsync_client02 -v /data/yyl/RsyncMaster/tongbu2:/data -v /etc/rsync.password:/etc/rsync.password \
             -e CRON_TASK_1="*/1  * * * * rsync -atuz --progress --delete /data/ rsync://user@server_ip:873/data/tongbu2 --password-file=/etc/rsync.password" \
         eeacms/rsync client

docker run -d --name=rsync_client03 -v /data/yyl/RsyncMaster/tongbu3:/data -v /etc/rsync.password:/etc/rsync.password \
             -e CRON_TASK_1="*/1  * * * * rsync -atuz --progress --delete /data/ rsync://user@server_ip:873/data/tongbu3 --password-file=/etc/rsync.password" \
         eeacms/rsync client

指令完成后,即可完成客户端备份文件向服务端备份的功能

你可能感兴趣的:(Docker,docker,运维,服务器)