基于rsync的docker容器化文件备份系统

in rsync •  6 years ago 

#前言
容器化是当前的趋势,文件备份系统网上虽然有很多种,不过使用配置起来并不是很方便,这里将介绍通过自己基于rsync做的一套文件备份系统,容器化配置简单易懂,镜像只有几兆

  • 支持保留文件权限
  • 支持检查主机资源,资源小于设定值时会优先删除老文件,再备份新文件
  • 支持设置每个文件备份的次数
  • 支持设置保留文件的天数
  • 支持自动注册

#部署

1. 安装docker(此处不多做介绍)

a. 通过yum安装:

参考:官方文档

b. 通过二进制安装:

参考:安装docker

2. 安装docker-compose

###a. 下载最新compose版本

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

版本发布地址:https://github.com/docker/compose/releases

###b. 添加执行权限

sudo chmod +x /usr/local/bin/docker-compose

###c. 命令补全工具(此步骤可选)

sudo curl -L https://raw.githubusercontent.com/docker/compose/1.21.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

具体参考:https://docs.docker.com/compose/completion/

3. 配置客户端(用来备份文件的主机)

a. 创建docker-compose.yaml文件

version: '2'
services:
  rsync-client:
    restart: always
    image: commanderhu/rsync-client
    container_name: rsync-client
    volumes:
      - /home/rsync/rsync_backup/:/backup_client/    #左边备份文件存的路径
    ports:
      - "22023:22"
    environment:
      - SLEEP_TIME=86400 #单位:秒,每次备份间隔时间,默认为86400
      - EXPIRATION_DAY=15 #单位:天,文件保留时间 
      - MINIMUM_DISK=500 #单位:G,最小磁盘预留空

b. 启动

docker-compose up -d

c. 检查

docker logs -f rsync-client

/home/rsync/rsync_backup路径下会创建空文件rsync_list

4. 配置服务端(需要被备份的主机)

a. 创建docker-compose.yaml文件

version: '2'
services:
  rsync-server:
    restart: always
    image: commanderhu/rsync-server
    container_name: rsync-server
    volumes:
      - ./data/:/data/        #左边路径指定需要备份的路径
    ports:
      - "874:873"
    environment:
      - RSYNC_IP=ip                #本机地址
      - RSYNC_PORT=874                        #映射端口
      - REMOTE_HOST_IP=ip   #客户端ip
      - REMOTE_HOST_PORT=22023      #客户端端口

b. 启动

docker-compose up -d

c. 检查

docker logs -f rsync-server

此时查看client端的rsync_list文件会自动增加一条记录

d. 备份

切换到备份机器:

docker restart rsync-client

备份机等待设定的间隔时间后会将注册的主机备份一遍,同时会保存同步文件和压缩包
备份文件的权限和原文件一致
容器会检查主机资源,资源小于设定值时会优先删除老文件,再备份新文件
可以设置每个文件备份的次数
设置保留文件的天数

4. 源码

需要源码的可以私信我

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!