gitlab 定期备份

Gitlab 备份到本地

#!/bin/bash  
  
# GitLab 容器名称或ID  
gitlab_container_name_or_id="gitlab"  
  
# 宿主机上的备份目录  
backup_directory_on_host="/home/backups/gitlab"  
  
# 检查宿主机上的备份目录是否存在,如果不存在则创建  
if [ ! -d "$backup_directory_on_host" ]; then  
    mkdir -p "$backup_directory_on_host"  
    echo "备份目录 $backup_directory_on_host 已创建。"  
fi  
  
# 进入 GitLab 容器执行备份命令  
# 注意:这里假设你已经在容器内部设置了正确的执行权限  
docker exec -it "$gitlab_container_name_or_id" gitlab-rake gitlab:backup:create  
  
# 等待备份完成(这里是一个简单的等待,实际可能需要更复杂的逻辑来检测备份是否完成)  
# 注意:这里只是一个示例,你可能需要根据你的实际情况来修改或移除这个等待  
sleep 10  
  
# 查找最新的备份文件(这里假设文件名以 _gitlab_backup.tar 结尾,并按时间排序)  
latest_backup_file=$(docker exec "$gitlab_container_name_or_id" ls -t /var/opt/gitlab/backups/ | grep _gitlab_backup.tar | head -n 1)  
  
# 将最新的备份文件从容器复制到宿主机  
docker cp "$gitlab_container_name_or_id:/var/opt/gitlab/backups/$latest_backup_file" "$backup_directory_on_host/"  
  
# 检查复制是否成功  
if [ $? -eq 0 ]; then  
    echo "备份文件 $latest_backup_file 已成功复制到 $backup_directory_on_host"  
else  
    echo "复制备份文件时出错。"  
fi  
  
# 脚本结束  
echo "备份完成。"

 

或者进入到容器执行 gitlab-rake gitlab:backup:create 这个是执行备份的命令,如果有挂在到本地 可以直接执行命令。如果没有挂在到本地 就需要上面的这个脚本了

 

posted @ 2024-06-17 18:01  不会游泳的鱼丶  阅读(52)  评论(0编辑  收藏  举报