NỘI DUNG
Xin chào tất cả các bạn đang xem bài viết của minh. Việc sao lưu dữ liệu luôn là giải pháp ưu tiên của ngươi quản trị web. Giúp dữ liệu của bạn luôn trong trạng thái an toàn, sẵn sàng, khi gặp sự cố.
Thông thường các nhà cung cấp dịch vụ lưu trữ có hỗ trợ bạn sao lưu dữ liệu và lưu trên hệ thống của họ, tuy nhiên sẽ bị giới hạn theo thời gian và số lượng. Vì vậy bạn hãy chủ động thay vì phó thác cho nhà cung cấp.
Mình có viết 2 bài sao lưu dữ liệu với rclone trên control là AApanel và CyberPanel. Vì nó tích hợp sẵn trên Control, nếu bạn đang dùng 2 control này có thể xem bài viết bên dưới. Nhưng nếu bạn chạy thuần script, dựng VPS thủ cộng, hoặc một số control panel chưa tích hợp sẵn thì bạn phải làm thế nào. Bài viết này sẽ hướng dẫn bạn setup thủ công cũng với Rclone.
Bước 1: Cài đặt Rclone
Việc cài đặt Rclone rất đơn giản, bạn chỉ cần copy lệnh bên dưới và dán vào cửa sổ SSH với quyền root là được.
cd /root/ wget https://downloads.rclone.org/v1.57.0/rclone-v1.57.0-linux-amd64.zip unzip rclone-v*.zip cp rclone-v*-linux-amd64/rclone /usr/bin/rclone
Bước 2: Cấu hình Rclone
Sau khi cài đặt xong Rclone thành công. Để cấu hình rclone, bạn thực hiện như sau. Tại cửa sổ SSH bạn nhập lệnh rclone config
Sau đó bạn hãy chọn các tuỳ chọn như ảnh bên dưới để cấu hình. Và mình sẽ chú thích tương ứng cho mỗi ảnh để bạn dễ nhận biết.
Chú thích:
- name>: bạn đặt tên bất kỳ, tốt hơn hết bạn để là backup vì trong script ở Bước 3 mình đã gán sẵn rồi.
Tiếp theo chọn nơi lưu trữ. Rclone hỗ trợ rất nhiều nơi lưu trữ và ở đây mình chọn Google Drive. Tuy phiên bản Rclone mà số thứ tự nó khác nhau. Với bản mình đang dùng thì là số 15.
Sau đó bạn nhập vào số 15 ở mục Storage. Và ở client_id> client_secret> bạn nhận Enter trên bàn phím nhé.
Tiếp theo bạn chọn dòng Full access all files, excluding Application Data Folder
tương ứng số 1
- scope: Nhập vào 1
- root_folder_id> Nhấn Enter
- Edit advanced config? (y/n): Chọn n
- Use auto config?: Chọn n
- Please go to the following link: Bạn hãy copy liên kết trên và dán vào thanh URL của trình duyệt. Sau đó thực hiện chọn tài khoản Google lưu trữ và làm theo. Khi hiện mã token bạn hãy copy lại.
- Enter verification code>: Dán mã token vừa lấy xong vào.
Sau đó bạn chọn như sau để tiếp tục.
- Configure this as a Shared Drive (Team Drive): Chọn n
Bước 3: Script backup lên Google Drive
Sau khi đã hoàn tất Bước 2. Bạn hãy tạo một script để backup website đây lên Google Drive. Mình sẽ tạo script như sau.
touch /root/auto-backup.sh chmod +x /root/auto-backup.sh vi /root/auto-backup.sh
Sau đó bạn copy toàn bộ script bên dưới. Và dán vào file auto-backup.sh
vừa tạo. Nhưng lưu ý cho mình bạn cần thay đổi một số thông tin sau. Trong đó các thông tin bạn cần thay là:
- MYSQL_USER= Ở đây mình backup Database với user root. Nếu bạn sử dụng user root thì giữ nguyên, nếu backup duy nhất 1 Database thì nhập vào user của database cần backup
- MYSQL_PASSWORD= Bạn hãy nhập vào mật khẩu ROOT MYSQL hoặc mật khẩu của Database nếu sử dụng user
- THƯ MỤC CHÍNH CỦA WEB: Nếu mã nguồn web bạn nằm ở
/home/
thì bạn để nguyên script bên dưới. Nhưng nếu mã nguồn nằm thư mục khác như thì bạn hãy thay đổi lại.
#!/bin/bash SERVER_NAME=backup-all ## Tên thư mục trong Google Drive TIMESTAMP=$(date +"%F") BACKUP_DIR="/root/backup/$TIMESTAMP" MYSQL_USER="root" MYSQL=/usr/bin/mysql MYSQL_PASSWORD="PmHmPkOqPPG4" ## Nhap Pass Root MYSQL cua ban vao MYSQLDUMP=/usr/bin/mysqldump SECONDS=0 mkdir -p "$BACKUP_DIR/mysql" echo "Backup Database In Process"; databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"` for db in $databases; do $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD $db | gzip > "$BACKUP_DIR/mysql/$db.gz" done echo "Backup Database Successful"; echo ''; echo "Backup Website In Process"; # THƯ MỤC CHÍNH CỦA WEB for D in /home/*; do if [ -d "${D}" ]; then #If a directory domain=${D##*/} # Domain name echo "- "$domain; zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache fi done echo "Backup Website Successful"; echo ''; echo "Dang tien hanh Backup len Google Drive"; /usr/bin/rclone move $BACKUP_DIR "backup:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1 #backup: remote config name created in previous step. # Clean up rm -rf $BACKUP_DIR #Delete backup directory on VPS /usr/bin/rclone -q --min-age 1w delete "backup:$SERVER_NAME" #Remove all backups older than 1 week on Google Drive Backup Directory /usr/bin/rclone -q --min-age 1w rmdirs "backup:$SERVER_NAME" #Remove all empty folders older than 1 week Google Drive Backup Directory /usr/bin/rclone cleanup "backup:" #Cleanup Trash , Delete all files in trash directory echo "Da dua tat ca du lieu len Gooogle Drive hoan tat"; echo ''; duration=$SECONDS echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
Lưu ý: Trong script trên mình đang setup cố định sao lưu 7 ngày liên tục. Bản sao lưu thứ 8 sẽ bị đè và thay thế bản cũ. Các bản sao lưu sẽ tự động xoá trên Google Drive. Cụ thể bạn sẽ thấy ở phần min-age 1w
. Nếu bạn muốn giữ lâu hơn hãy thay đổi số này theo tuần hoặc ngày.
Ví dụ:
- 2w: Tương ứng 2 tuần
- 10d: Tương ứng 10 ngày
Bước 4: Tạo cron sao lưu tự động và xoá
Mình sẽ tạo một cron để tự động sao lưu định kỳ. Ở cửa sổ SSH bạn nhập lệnh crontab -e
sau đó nhấn phím i
hoặc Insert
và nhập vào lịch sau
0 1 * * * /root/auto-backup.sh > /dev/null 2>&1
Lịch này là cứ đúng 1 giờ sáng hằng ngày sẽ tự động chạy Backup move Google Drive.
Như vậy đã hoàn tất các bước cấu hình tự động sao lưu website lên Google Drive với Rclone. Bên dưới là một ảnh mình thực hiện trên một số VPS.
Bước 5: Tải file backup từ Cloud xuống VPS
Trường hợp bạn muốn tải trực tiếp file từ Google Drive xuống VPS. Bạn sử dụng lệnh sau
rclone copy "backup:/backup-all/file-can-tai" /thu-muc-luu-file Ví dụ: rclone copy "backup:/backup-all/2021-08-29" /home/dotrungquan.info/public_html
Trong đó:
- rclone copy: Lệnh copy file về
- backup: tên cấu hình rclone mà bạn đặt ở Bước 2
- backup-all: Tên thư mục lưu ở Google Drive
- 2021-08-29: File cần tải về
- /home/dotrungquan.info/public_html: Thư mục lưu file tải về ở VPS
Chúc bạn thực hiện thành công.