说明
公司所在机房时不时断电,且因为机房没配置UPS,于是考虑用自己家里的NAS做一个GitLab仓库的异地备份。
之前其实已经在物理机(CentOS7系统)上通过部署Gogs,通过新增镜像仓库的方式实现了代码的异地备份。但Linux的VPN客户端不稳定的,即便配置了自动重连,但无法断线重连,导致无法正常同步。于是使用oVirt 安装了Windows虚拟机,并使用SoftEther Vpn Client配置好公司的VPN网络,需要配置开机自动启动和断线自动连接。
考虑到之前部署Gogs时只能一个个新增镜像仓库,也是花了不少时间。这次重新部署,直接使用Git命令(不依赖Gogs)、自动化脚本和Windows定时任务的方式进行同步备份。
配置
SSH Keys
因为涉及到多个项目的同步,配置上SSH Keys,可以减少配置和增加安全性。
生成ssh公私钥,使用下面的脚本,都使用默认,敲回车即可。
1
ssh-keygen -o -t rsa -b 4096 -C "l4qiang@gmail.com"
复制
/c/Users/v/.ssh/id_rsa/id_rsa.pub内容添加用户的SSH Keys,点击用户头像,
settings->SSH Keys,将复制的公钥贴入Key的文本框中,点击Add Key按钮。测试
1
ssh -T git@xxx.com
Git镜像仓库与同步
主要使用两个git命令:
1 | # 创建镜像 |
脚本
编写脚本并命名为sync.sh。
1 | gitpath_prefix=git@xxx.com: |
定时任务
打开Task Scheduler,选择Action->Create Basic Task,按格式填写对应的任务信息。
主要是Actions部分,填写如下:
1 | "C:\Program Files\Git\bin\bash.exe" /c/Repository/sync.sh |