之前Gitlab一直是本机备份,但因为某些原因导致整个虚拟机挂了,差一点数据也丢失了。所以经过这次后,我赶紧搞了个异机备份,防止下次出现这种情况时连备份数据都没有。
安装篇
安装rsync
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
yum install -y rsync
安装Inotify
Inotify 一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。
yum install -y inotify-tools
配置篇
配置免密传输
首先使用ssh-keygen生成密匙
ssh-keygen
然后使用ssh-copy-id将公匙拷贝至远程主机
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.1.1.3
在复制时会需要输入远程主机的密码,然后就会自动将公钥拷贝至远程目录。 复制完成后使用
ssh root@10.1.1.3
就可以直接不需要密码,直接进入远程主机了。
自动同步脚本
新建脚本auto-sync.sh
并写入
#!/bin/bash
# 需要同步的路径
export BACKUP_PATH=/var/opt/gitlab/backups/
inotifywait --exclude '\.(part|swp|tmp)' -r -mq -e modify,move_self,create,delete,move,close_write $BACKUP_PATH |
while read event;
do
rsync -vazu --progress --delete -e ssh $BACKUP_PATH root@10.1.1.3:/data/backups
done
赋予可执行权限
chmod +x auto-sync.sh
然后启动脚本
nohup auto-sync.sh > /dev/null 2>&1 &
启动完成后只需要在备份的路径中随意新建或者编辑一个文件即可看到效果。