SA Blog --系统管理员的博客生涯

书写自己的系统管理博客生涯
posts(330) comments(254) trackbacks(0)
  • IT博客
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类(395)

  • *UNIX系统(148)
  • Cloud(3)
  • Moive
  • Music(1)
  • OpenStack(7)
  • openstack
  • Wiki(1)
  • Windows系统(32)
  • 其他(33)
  • 娱乐
  • 存储相关(22)
  • 存储网络(10)
  • 常用工具下载(25)
  • 数据库应用技术(53)
  • 网络技术(41)
  • 英语
  • 虚拟化(19)

随笔档案(330)

  • 2020年9月 (1)
  • 2020年8月 (1)
  • 2020年7月 (8)
  • 2020年4月 (1)
  • 2020年2月 (1)
  • 2020年1月 (1)
  • 2019年9月 (2)
  • 2019年4月 (1)
  • 2016年1月 (1)
  • 2015年12月 (1)
  • 2015年7月 (4)
  • 2015年5月 (2)
  • 2014年3月 (2)
  • 2014年1月 (1)
  • 2013年12月 (1)
  • 2013年3月 (5)
  • 2013年2月 (4)
  • 2012年12月 (1)
  • 2012年11月 (2)
  • 2012年9月 (2)
  • 2012年8月 (1)
  • 2012年6月 (1)
  • 2012年5月 (1)
  • 2012年1月 (1)
  • 2011年12月 (2)
  • 2011年10月 (1)
  • 2011年9月 (3)
  • 2011年8月 (1)
  • 2011年7月 (5)
  • 2011年6月 (3)
  • 2011年5月 (5)
  • 2011年4月 (2)
  • 2011年3月 (2)
  • 2011年2月 (1)
  • 2011年1月 (5)
  • 2010年12月 (1)
  • 2010年11月 (4)
  • 2010年9月 (13)
  • 2010年8月 (4)
  • 2010年7月 (5)
  • 2010年6月 (5)
  • 2010年5月 (13)
  • 2010年4月 (10)
  • 2010年3月 (5)
  • 2010年2月 (1)
  • 2010年1月 (9)
  • 2009年12月 (5)
  • 2009年11月 (5)
  • 2009年10月 (1)
  • 2009年9月 (3)
  • 2009年8月 (2)
  • 2009年7月 (6)
  • 2009年6月 (3)
  • 2009年5月 (2)
  • 2009年4月 (1)
  • 2009年3月 (2)
  • 2009年2月 (3)
  • 2008年12月 (3)
  • 2008年11月 (1)
  • 2008年10月 (9)
  • 2008年9月 (5)
  • 2008年8月 (3)
  • 2008年7月 (1)
  • 2008年6月 (1)
  • 2008年5月 (2)
  • 2008年4月 (1)
  • 2008年3月 (1)
  • 2008年2月 (3)
  • 2008年1月 (1)
  • 2007年12月 (5)
  • 2007年11月 (1)
  • 2007年10月 (6)
  • 2007年9月 (4)
  • 2007年8月 (4)
  • 2007年7月 (34)
  • 2007年6月 (1)
  • 2007年4月 (2)
  • 2007年3月 (1)
  • 2007年2月 (1)
  • 2006年11月 (1)
  • 2006年9月 (4)
  • 2006年8月 (4)
  • 2006年7月 (1)
  • 2006年6月 (10)
  • 2006年5月 (3)
  • 2006年4月 (14)
  • 2006年2月 (6)
  • 2006年1月 (6)
  • 2005年12月 (12)

收藏夹(5)

  • Other(5)

IT技术

  • MSDN 库(中文)
  • 欢迎使用 MSDN 库(中文),MSDN 库为使用 Microsoft® 工具、产品、技术和服务的开发人员提供必不可少的信息资源。MSDN 库包含操作方法和参考文档、示例代码、技术文章和其他内容。请浏览目录或使用搜索功能来查找所需内容。

健康

  • 体检咨询
  • 北京体检 体检咨询
  • 足医生
  • 足医生

友情链接

  • TestLink中文论坛
  • Testlink 中文论坛
  • 备案专题
  • 备案专题
  • 微软大中华区安全博客
  • 微软大中华区安全博客

存储技术

  • doit存储
  • doit 存储,存储热门论坛
  • ITPUB
  • Oracle DBA 热门中文社区
  • TechTarget IT专家网
  • 蓝德科技

网络技术

  • ChinaUnix 中文社区
  • ChinaUnix 热门中文社区

搜索

  •  

最新评论

  • 1. re: 吐槽一下阿里系软件,就是天天的升级???
  • 评论内容较长,点击标题查看
  • --David
  • 2. re: Symantec Backup exec system recovery 2010(BESR 2010)故障汇总
  • 评论内容较长,点击标题查看
  • --112
  • 3. re: OpenStack安装部署管理中常见问题解决方法(OpenStack-Lite-FAQ)
  • /home/stack/devstack/tools/worlddump.py -d /home/stack/logs
    求救这是什么问题啊。
  • --陈晓龙
  • 4. re: nokia 手机密码忘记后破解
  • nokia 2630,密码不见,恳请帮忙,谢谢
    串号:355219037959407
    lipolipo@gmail.com
  • --沈同学
  • 5. re: chroot 工具 jailkit 限制用户 活动范围 和 权限 _ 笔记
  • 是一个很好的工具嘛。感谢分享。
  • --少林功夫好

阅读排行榜

评论排行榜

View Post

Gitlab日常备份及迁移

Gitlab安装体验一文介绍了如何在阿里云上安装Gitlab,安装是很简单方便,但是出于数据安全的考虑,我们需要做一些备份,以防万一。

本文重点介绍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恢复备份

同样, Gitlab的从备份恢复也非常简单

# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 从1393513186编号备份中恢复
gitlab-rake gitlab:backup:restore BACKUP=1393513186_gitlab_backup

# 启动Gitlab
sudo gitlab-ctl start

Gitlab迁移

迁移如同备份与恢复的步骤一样,只需要将老服务器/var/opt/gitlab/backups目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups即可(如果你没修改过默认备份目录的话)。

但是需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同。

比如新服务器安装的是最新的7.60版本的Gitlab,那么迁移之前,最好将老服务器的Gitlab升级为7.60在进行备份。

Gitlab定时自动异地备份

由于Gitlab部署在了阿里云上,把Gitlab再备份在本地意义不是特别大,所以这里利用了家里的NAS做了一个简单的异地备份。

服务器备份脚本

在阿里云服务器上创建如下脚本,存储在/home/scripts/gitlab_backup.sh文件中

#!/bin/bash

# Gitlab自动备份脚本


#Gitlab 备份地址
LocalBackDir=/var/opt/gitlab/backups

#备份日志文件
LogFile=$LocalBackDir/remote_backup.log

#新建备份日志文件
touch $LogFile

echo "-------------------------------------------------------------------------" >> $LogFile

#记录本地生成gitlab备份日志
echo "Gitlab auto backup at local server, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

#执行gitlab本地备份
gitlab-rake gitlab:backup:create >> $LogFile 2>&1

# $?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败
if [ $? -eq 0 ];then
#追加日志到日志文件
echo "Gitlab auto backup at local server successed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
else
#追加日志到日志文件
echo "Gitlab auto backup at local server failed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
fi

#查找本地备份目录修改时间为10分钟以内且后缀为.tar的Gitlab备份文件
Backfile_Send_To_Remote=`find $LocalBackDir -type f -mmin -10 -name '*.tar' | tail -1` >> $LogFile 2>&1

echo $Backfile_Send_To_Remote

NAS免密登录阿里云

异地备份思路需要在NAS上登录到阿里云服务器上执行对应的备份命令并下载文件,所以需要让NAS可以免密登录阿里云服务器,以定时自动执行这个任务。

免密登录的配置,可以参考SSH免密登录配置

NAS服务器脚本

SSH进入NAS,然后创建脚本,自动在服务器上执行备份,并下载到NAS本地来。脚本存储在/volume1/homes/gitlab_back/scripts/gitlab_backup_download.sh文件中。

#!/bin/bash

# 远程登录gitlab服务器,执行自动备份脚本,然后传输至本地

#Gitlab服务器
RemoteServer=git.ufeng.top
RemoteServerUser=root

#Gitlab服务器备份地址
RemoteBackDir=/var/opt/gitlab/backups

#NAS本地备份地址
LocalBackDir=/volume1/homes/gitlab_back

#备份日志文件
LogFile=$LocalBackDir/remote_backup.log

#新建备份日志文件
touch $LogFile

echo "-------------------------------------------------------------------------" >> $LogFile
#记录NAS下载gitlab备份日志
echo "Gitlab backup auto download at NAS, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

#远程登录gitlab服务器并执行备份脚本,获取备份文件的名字
result=`ssh $RemoteServerUser@$RemoteServer "sh /home/scripts/gitlab_backup.sh"`

#远程下载备份文件到本地
scp $RemoteServerUser@$RemoteServer:$result $LocalBackDir

echo "Gitlab remote backup file is ${result}" >> $LogFile

# 备份结果追加到备份日志
if [ $? -eq 0 ];then
echo ""
echo "$(date +"%Y-%m-%d %H:%M:%S") Gitlab Remote download Succeed!" >> $LogFile
else
echo "$(date +"%Y-%m-%d %H:%M:%S") Gitlab Remote download Failed!" >> $LogFile
fi

然后配置群晖的定时任务,每天自动执行。

群晖计划任务.png

自动清理历史备份文件

由于阿里云的存储空间有限,所以对Gitlab的历史备份文件需要定期删除,释放磁盘空间。

同样在/home/scripts/gitlab_auto_del_backup.sh文件中存储自动清理历史备份的脚本内容。

#!/bin/bash

#清理多余的历史备份

#Gitlab 备份地址
LocalBackDir=/var/opt/gitlab/backups

#备份日志文件
LogFile=$LocalBackDir/remote_clean.log

#新建备份日志文件
touch $LogFile

echo "--------------------------------------------------------------------- " >> $LogFile
echo "Gitlab auto clean local backup, start at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

# 找到3*24*60分钟前,以tar结尾的文件并删除
find $LocalBackDir -type f -mmin +4320 -name "*.tar" -exec rm -rf {} \;

# $?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败
if [ $? -eq 0 ];then
#追加日志到日志文件
echo "Gitlab auto clean local backup success at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
else
#追加日志到日志文件
echo "Gitlab auto clean local backup failed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
fi

然后赋予执行权限

chmod u+x /home/scripts/gitlab_auto_del_backup.sh

配置定时任务

crontab -e

0 3 * * * /home/scripts/gitlab_auto_del_backup.sh

posted on 2020-07-11 17:27 David 阅读(2199) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
 
Powered by:
IT博客
Copyright © David