GitLab备份脚本

GitLab备份脚本

#!/bin/bash
# 备份执行日期
date=`date +%Y%m%d`

# 本地备份文件存放路径
local_backup_dir=/projects/gitlab/data/backups/
# 远程主机备份文件存放路径
remote_backup_dir=/opt/gitlab_backup/backup_file/

# 本地配置文件存放路径
local_config_dir=/projects/gitlab/config/
# 远程主机配置文件存放路径
remote_config_dir=/opt/gitlab_backup/config_file/

# 记录备份开始时间,%s seconds since 1970-01-01 00:00:00 UTC
date1=`date +%s`
# 执行备份
# docker exec -t gitlab gitlab-backup create > ${local_backup_dir}gitlab_backup_log_${date}.log

# 判断备份成功或者失败
if [ $? -eq 0 ]; then
  # 记录备份完成时间,文件传输开始时间;%s seconds since 1970-01-01 00:00:00 UTC
  date2=`date +%s`

  # 获取最新的备份文件名称
  newest_backup_file=`ls -lt ${local_backup_dir} | grep tar | head -n 1 | awk '{print $9}'`
  # 备份文件大小
  newest_backup_file_size=`du -hs "${local_backup_dir}${newest_backup_file}" | awk '{print $1}'`
  # 备份文件夹里边保留的备份文件数量
  backup_count=`ls -lt ${local_backup_dir} | grep tar | wc -l`

  # GitLab服务器磁盘存储剩余
  local_disk_size=`df -hT ${local_backup_dir} | awk 'NR==2 {print $5}'`
  # 备份服务器的磁盘剩余
  remote_disk_size=`ssh root@x.x.x.x df -hT ${remote_backup_dir} | awk 'NR==2 {print $5}'`

  # 传输备份文件到备份服务器
  ###! The duration in seconds to keep backups before they are allowed to be deleted 备份保留7天
  # gitlab_rails['backup_keep_time'] = 604800  单位:秒
  # rsync --progress -a ${local_backup_dir} root@10.10.17.201:${remote_backup_dir} >> ${local_backup_dir}gitlab_backup_log_${date}.log
  # 传输配置文件到备份服务器
  rsync --progress -a ${local_config_dir} root@10.10.17.201:${remote_config_dir} >> ${local_backup_dir}gitlab_backup_log_${date}.log
  # 需要考虑传输失败的情况,还有就是记录日志


  # 记录文件传输完成时间,%s seconds since 1970-01-01 00:00:00 UTC
  date3=`date +%s`

  # 备份操作耗时:`$[$date2-$date1]` 文件传输耗时:`$[$date3-$date2]`
  backup_time=$[($date2-$date1)/60]
  transfer_time=$[($date3-$date2)/3600]
  # 全程耗时:`$[$date3-$date1]`,单位转换秒、分钟、小时
  all_time=$[($date3-$date1)/3600]

  # 邮件通知:成功
  echo "GitLab备份完成!!
  备份文件存放路径,本机:${local_backup_dir}  备份服务器:${remote_backup_dir}
  配置文件存放路径,本机:${local_config_dir}  备份服务器:${remote_config_dir}
  备份操作耗时:${backup_time}分钟 文件传输耗时:${transfer_time}秒
  全程耗时:${all_time}秒
  本次备份:备份文件绝对路径:${local_backup_dir}${newest_backup_file}  备份文件大小:${newest_backup_file_size}
  当前保留的备份文件数量为:${backup_count}份
  GitLab服务器磁盘存储剩余:${local_disk_size}  备份服务器磁盘存储剩余:${remote_disk_size}" | mutt -s "GitLab备份成功-${date}" 18028543308@163.com
else
  # 邮件通知:备份失败
  echo "备份操作失败,具体原因请查看备份日志" | mutt -s "GitLab备份失败-${date}" 18028543308@163.com
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值