Feb 142023
 

Để thực hiện việc backup GitLab và lưu bản sao lưu có tên chứa ngày tháng năm, giữ lại 3 bản sao lưu mới nhất và sao chép bản sao lưu mới nhất sang máy chủ khác thông qua ssh key, bạn có thể sử dụng script bash sau:

#!/bin/bash

# GitLab backup directory
backup_dir="/var/opt/gitlab/backups/"

# Create the backup directory if it doesn't exist
if [ ! -d "$backup_dir" ]; then
    mkdir -p "$backup_dir"
fi

# Backup GitLab and name the backup file with the current date and time
backup_file="$backup_dir$(date +%Y-%m-%d_%H-%M-%S)_gitlab_backup.tar"

gitlab-rake gitlab:backup:create BACKUP=$backup_file

# Keep only the 3 most recent backups and delete the rest
cd "$backup_dir"
ls -t | grep -v -E "$(ls -t | head -n 3 | sed 's/$/|/' | tr -d '\n')" | xargs rm -f

# Copy the newest backup file to another server via ssh key
remote_server="user@remote-server"
remote_backup_dir="/var/opt/gitlab/backups/"

newest_backup_file=$(ls -t | head -n 1)

scp -i /path/to/ssh/key "$backup_dir$newest_backup_file" "$remote_server:$remote_backup_dir"

Giải thích các bước trong script:

  1. Thiết lập đường dẫn cho thư mục sao lưu GitLab.
  2. Kiểm tra xem thư mục sao lưu đã tồn tại chưa, nếu không thì tạo mới thư mục.
  3. Thực hiện sao lưu GitLab và đặt tên tệp sao lưu theo ngày giờ hiện tại.
  4. Giữ lại chỉ 3 bản sao lưu mới nhất và xóa các bản sao lưu cũ hơn.
  5. Sao chép tệp sao lưu mới nhất sang máy chủ khác qua ssh key, sử dụng lệnh scp.