Script backup dữ liệu Gitlab CE lên Amazon S3

Bài viết này là phần 5 trong 9 phần của serie bài viết Cài đặt Gitlab CE trên Ubuntu 18

ToiVietBlog - Bài viết này tôi sẽ cung cấp cho các bạn một script dùng để backup dữ liệu Gitlab CE lên Amazon S3.

Trước tiên, bài viết không bao gồm về kiến thức làm việc với AWS. Cho nên là mình sẽ không viết ra các bước các bạn làm thế nào để tạo S3 bucket, làm thế nào các bạn tạo IAM user, vân vân và vân vân.

Vậy nên, mình xin mặc định là bạn đã biết cách sử dụng S3 và IAM trong Amazon.

script-backup-du-lieu-gitlab-ce-len-amazon-s3 Script backup dữ liệu Gitlab CE lên Amazon S3
Script backup dữ liệu gitlab ce lên amazon s3.

Giới thiệu script backup dữ liệu Gitlab CE lên Amazon S3

Script này được dựa trên bài viết trước về backup và restore Gitlab mà mình đã viết.

Sẽ có bạn thắc mắc là trong file config của Gitlab (file gitlab.rb) đã có phần thiết lập tự động backup dữ liệu lên S3 rồi, cần gì script.

Xin giải đáp với bạn là thiết lập đó không tự động backup thư mục quan trọng đó là /etc/gitlab. Thư mục này chứa những thiết lập và secret variable quan trọng của hệ thống.

Vì vậy script backup ra đời.

Nội dung script backup

Dưới đây là nội dung của script backup Gitlab. Bạn có thể copy script backup tại đây.

#!/bin/bash
#
# Use: 
#   - Script use to backup data in server gitlab ce and move backup to amazon s3
#   - Tested in Ubuntu 18.04
# By:  Phạm Trung Dũng
# Website: https://toivietblog.com
# Version: 1.0
# Date: 03-08-2020

# Function define variable
f_defineVariable () {
    # Temp backup folder
    folderBackup="/tmp/backupGitlab"

    # Get date, format YYYY_mm_dd
    currentDate=$(date +%Y_%m_%d)

    # Get server name
    serverName=$(hostname)

    # Get current folder
    currentFolder=$(pwd)

    # Folder gitlab config
    gitConfigFolder="/etc/gitlab"
}

# Function backup data
f_backupData () {
    # Create folder backup
    if [[ -d "$folderBackup" ]]; then
        rm -rf $folderBackup
    else
        mkdir -p $folderBackup
        mkdir -p $folderBackup/iptables
    fi

    # Call command gitlab backup to backup all data
    /usr/bin/gitlab-backup create

    # Find the `full name` of backup file
    backupFile=`find /var/opt/gitlab/backups | grep "$currentDate"`

    # Move/copy all needed data to backup file
    mv $backupFile $folderBackup/
    cp -rp $gitConfigFolder $folderBackup/

    # If you using IPtables in Ubuntu 18, uncomment 2 lines below
    #cp -rp /etc/iptables/default.rules $folderBackup/iptables/
    #cp -rp /etc/iptables/rules.v4 $folderBackup/iptables/
    
    # Create backup configuration file
    tar -cvzf $currentDate.$serverName.gitlab.tar.gz $folderBackup

    # Move backup file to s3 bucket
    aws s3 mv $currentFolder/$currentDate.$serverName.gitlab.tar.gz s3://your-s3-bucket-name/ --region your-s3-region
}

# Function clear backup files after move to s3 done
f_clearFile () {
    # Remove file backup
    if [[ -f "$currentDate.$serverName.gitlab.tar.gz" ]]; then
        rm -f $currentDate.$serverName.gitlab.tar.gz
    fi

    # Remove folder temp backup
    if [[ -d "$folderBackup" ]]; then
        rm -rf $folderBackup
    fi
}

# Function main
f_main () {
    f_defineVariable
    f_backupData
    f_clearFile
}
f_main

# Exit
exit

Các lệnh trong script thì mình đều đã comment nên cũng khá dễ hiểu.

Script chia làm 3 hàm xử lý và 1 hàm main:

  1. f_defineVariable (): hàm này mục đích chỉ để khai báo một số biến mà mình sẽ sử dụng trong script.
  2. f_backupData (): hàm này sẽ backup các dữ liệu cần thiết, đóng gói file backup, chuyển file backup lên Amazon S3.
  3. Và hàm f_clearFile (): hàm này để clear các thư mục tạm/file sau khi đã thực hiện xong việc backup lên S3.

Sử dụng script backup dữ liệu Gitlab

Sau khi bạn copy nội dung script ở trên về máy chủ Gitlab của bạn, đặt tên file backup_data_gitlab.sh và đặt trong thư mục /opt.

Bạn sẽ cần thay 2 giá trị bên trong script:

  • your-s3-bucket-name: tên bucket tương ứng trên S3 của bạn.
  • your-s3-region: mã region của bucket, ví dụ: ap-southeast-1.

Sau đó bạn gõ crontab -e để hẹn giờ thực hiện script backup, lưu ý là đang thực hiện với user root.

Ở đây mình chọn 0h00 hằng ngày.

0 0 * * * /bin/bash /opt/backup_data_gitlab.sh

Kết luận

Vậy là bạn đã hoàn thành việc thiết lập tự động backup dữ liệu Gitlab CE lên Amazon S3. Bạn có thể kiểm tra script có hoạt động hay không bằng cách gõ lệnh /bin/bash /opt/backup_data_gitlab.sh và sau đó kiểm tra trên bucket đã có dữ liệu hay chưa.

Tiếp tục đọc serie bài viết«« Phần trước: Backup và khôi phục dữ liệu cho Gitlab CEPhần tiếp theo: Hướng dẫn update phiên bản Gitlab CE »»
0 0 votes
Article Rating
Nhấn vào đây để đánh giá bài này!
[Tổng: 0 - Trung bình: 0]

If you appreciate what we share in this blog, you can support us by:
  1. Stay connected to: Facebook | Twitter | Google Plus | YouTube
  2. Subscribe email to recieve new posts from us: Sign up now.
  3. Start your own blog with SSD VPS - Free Let's Encrypt SSL ($2.5/month).
  4. Become a Supporter - Make a contribution via PayPal.
  5. Support us by purchasing Ribbon Lite Child theme being using on this website.

We are thankful for your support.

«« »»
Theo dõi
Thông báo về
guest
0 Comments
Inline Feedbacks
View all comments