使⽤Gitlab⼀键安装包后的⽇常备份恢复与迁移
Gitlab 创建备份
使⽤Gitlab⼀键安装包安装Gitlab⾮常简单, 同样的备份恢复与迁移也⾮常简单. 使⽤⼀条命令即可创建完整的Gitlab备
份:
gitlab-rake gitlab:backup:create
使⽤以上命令会在 /var/opt/gitlab/backups ⽬录下创建⼀个名称类似为 1393513186_gitlab_backup.tar 的
压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的 1393513186 是备份创建的⽇期.
Gitlab 修改备份⽂件默认⽬录
你也可以通过修改 /etc/gitlab/gitlab.rb
来修改默认存放备份⽂件的⽬录: gitlab_rails['backup_path'] = '/mnt/backups'
将/mnt/backups 修改为你想存放备份的⽬录即可, 修改完成之后使⽤ gitlab-ctl reconfigure
命令重载配置⽂件。
Gitlab ⾃动备份
也可以通过 crontab 使⽤备份命令实现⾃动备份:
sudo su -
crontab -e
加⼊以下, 实现每天凌晨2点进⾏⼀次⾃动备份: 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
比较完整的备份命令可以参考下边的脚本 使用方法:
0 2 * * * /bin/bash /home/dong/cp_git_backup_to_ftp.sh
注意:需要切到root下使用
ssh-keygen -t rsa
生成id_rsa.pub, 并将其内容拷贝到远程主机的authorized_keys
中,否则scp命令在cronab中不好使
Gitlab 恢复
同样, Gitlab的从备份恢复也⾮常简单:
# 停⽌相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 从1393513186编号备份中恢复
gitlab-rake gitlab:backup:restore BACKUP=1393513186
# 启动Gitlab
sudo gitlab-ctl start
Gitlab迁移
迁移如同备份与恢复的步骤⼀样, 只需要将⽼服务器 /var/opt/gitlab/backups
⽬录下的备份⽂件拷⻉到新服务器
上的 /var/opt/gitlab/backups
即可(如果你没修改过默认备份⽬录的话). 但是需要注意的是新服务器上的Gitlab
的版本必须与创建备份时的Gitlab版本号相同. ⽐如新服务器安装的是最新的7.60版本的Gitlab, 那么迁移之前, 最好将
⽼服务器的Gitlab 升级为7.60在进⾏备份.
将gitlib的最新备份文件拷贝到远程主机shell脚本
#!/bin/bash
GIT_PATH="/home/backup/git/"
FTP_PATH="/home/dong/ftp/tmp/"
REMOTE="dong@192.168.1.113:/home/dong/backup/"
LOG_FILE="/home/dong/git_log/"`date +%Y-%m-%d_%H-%M-%S`".log"
# 自动输入sudo密码
echo "linux11" | sudo -S ls > /dev/null
# 创建日志文件
touch $LOG_FILE
# gitlib创建备份
echo "gitlib创建备份 " `date` >> $LOG_FILE
sudo gitlab-rake gitlab:backup:create >> $LOG_FILE
# 获得新的备份文件
LAST_GIT_FILE=`sudo ls -t $GIT_PATH | head -1`
echo "获得新的备份文件" $LAST_GIT_FILE >> $LOG_FILE
# 将最新的备份文件拷贝到ftp目录下
sudo cp ${GIT_PATH}${LAST_GIT_FILE} $FTP_PATH >> $LOG_FILE
# 修改权限
sudo chmod +r ${FTP_PATH}${LAST_GIT_FILE} >> $LOG_FILE
# 将最新的备份文件拷贝到远程机器上
echo "将最新的备份文件拷贝到远程机器上 " $REMOTE >> $LOG_FILE
/usr/bin/scp ${FTP_PATH}${LAST_GIT_FILE} $REMOTE >> $LOG_FILE
echo "end..." >> $LOG_FILE
网友评论