假设:服务器A:192.168.2.229
假设:备份服务器B:192.168.2.230
1.服务器B安装git
2.在gitlab备份服务器B上生成rsa证书
生成的过程中提示输入**对保存位置,直接回车,接受默认值就行了
ssh-****** -t rsa -C "[email protected]"
这样,在/root/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,其中公共**保存在 /root/.ssh/id_rsa.pub,私有**保存在/root/.ssh/id_rsa
3. 在gitlab服务器B上cp生成rsa公钥证书
在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A,以便拷贝到远程服务器A。
cd /root/.ssh
cp id_rsa.pub id_rsa.pub.A
4.生成rsa公钥证书上传到服务器A
先在服务器A上创建目录/root/.ssh。
mkdir -p /root/.ssh
使用scp命令进行远程复制,将备份服务器B生成的id_rsa.pub.A拷贝到服务器A的/root/.ssh目录下。在B执行,图中IP是A的IP
scp /root/.ssh/id_rsa.pub.A [email protected]:/root/.ssh/
此时使用scp命令需要输入密码,当把下面的“2.3 **配对”执行后,以后gitlab服务器A使用scp命令复制文件到备份服务器B的话,就不需要输入密码了。
5 **配对
1)创建authorized_keys文件
在服务器A的/root/.ssh下创建authorized_keys文件。
touch /root/.ssh/authorized keys
2)将id_rsa.pub.A文件内容追加到authorized_keys 文件中
通过 cat 命令 把id_rsa.pub.A 追写到 authorized_keys 文件中。
cd /root/.ssh/
cat id_rsa.pub.A >> authorized_keys
3)修改authorized_keys文件的权限
authorized_keys文件的权限很重要,如果设置为777,那么登录的时候,还是需要提供密码的。
chmod 400 authorized_keys
我们发现不需要输入密码了:
6.定时将备份文件传到备份服务器
创建远程备份脚本
在gitlab服务器B上,在 /home/backups目录下创建定期备份脚本auto_backup_to_remote.sh。
vim /home/backups/auto_backup_to_remote.sh
修改远程备份脚本auto_backup_to_remote.sh的权限
要能让系统执行auto_backup_to_remote.sh,必须修改该脚本的权限。
chmod 777 auto_backup_to_remote.sh
创建日志存放目录
mkdir -p /home/backups/log
添加定时计划
定时备份的思路建立在手动的基础上,通过crontab添加定时计划就可以解决这个问题。
一般添加定时计划可以有2种方式:
1.使用命令crontab -e,将定时任务添加后保存。
2.将定时任务添加到/etc/crontab文件中。
我这里采取第一种,使用crontab -e。
crontab -e
结合我之前对公司gitlab本地备份的设计,故分别在每天凌4点进行备份,故添加下面的内容,wq保存。
0 4 * * * /home/backups/auto_backup_to_remote.sh -D 1
重启crontab
systemctl restart crond