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.

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