Hướng dẫn backup website cPanel lên Drive với Rclone

7
0

rclone cpanel

Trong thế giới kỹ thuật hiện đại, việc backup dữ liệu của website là một nhiệm vụ quan trọng để đảm bảo an toàn và khả năng khôi phục khi xảy ra sự cố. Một trong những phương pháp phổ biến để sao lưu dữ liệu website là sử dụng cPanel và Rclone để sao chép dữ liệu lên các dịch vụ lưu trữ đám mây như Google Drive. Trong bài viết này, chúng ta sẽ tìm hiểu cách thực hiện việc backup website cPanel lên Google Drive bằng cách sử dụng công cụ mạnh mẽ và linh hoạt là Rclone.

Rclone là một tiện ích dòng lệnh được phát triển để quản lý và sao chép dữ liệu giữa nhiều dịch vụ lưu trữ đám mây khác nhau. Với khả năng tích hợp nhiều dịch vụ lưu trữ như Google Drive, Dropbox, Amazon S3, và nhiều hơn nữa, Rclone là một công cụ linh hoạt cho việc sao lưu dữ liệu.

Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt Rclone trên máy chủ cPanel của bạn và có tài khoản Google Drive hoặc dịch vụ lưu trữ đám mây khác để lưu trữ dữ liệu backup.

Trong bài viết này, chúng ta sẽ đi qua các bước cơ bản để cấu hình Rclone với Google Drive và thực hiện sao lưu dữ liệu website của bạn. Từ việc tạo một khóa API Google Drive đến thiết lập cấu hình Rclone và lên lịch tự động sao lưu, chúng ta sẽ tìm hiểu cách sử dụng Rclone một cách hiệu quả để đảm bảo an toàn cho dữ liệu quan trọng của bạn.

Hãy cùng nhau khám phá cách thực hiện việc backup website cPanel lên Google Drive bằng Rclone và tận dụng sức mạnh của công nghệ để bảo vệ dữ liệu của bạn trong trường hợp xấu nhất có thể.

Yêu cầu

  • Hosting cho phép SSH
  • Hosting phải còn trống dung lượng để lưu trữ file backup trước khi đẩy lên Drive

Bước 1: Cài đặt và cấu hình Rclone

  • Cài đặt Rclone

Đầu tiên bạn cần cài đặt Rclone trên cPanel. Bạn hãy SSH vào cPanel với quyền user hoặc truy cập vào mục Terminal để thực hiện.

Hướng dẫn backup website cPanel lên Drive với Rclone
DOTRUNGQUAN.INFO
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
mv rclone-v1.62.2-linux-amd64 rclone
# Add rclone alias to .bash_profile
echo "alias rclone='/home/$(whoami)/rclone/rclone'" >> /home/$(whoami)/.bash_profile
source /home/$(whoami)/.bash_profile
    
image 121
  • Cấu hình Rclone với Drive

Đầu tiên bạn cần tạo SSH Tunne

Nếu bạn đang trong cửa sổ SSH bạn hãy logout ra. Sau đó bạn tiến hành đăng nhập lại SSH vào VPS với câu lệnh như sau (Với Windows các bạn sử dụng CMD để SSH) để tạo một Tunne mới

ssh [email protected] -L 53682:127.0.0.1:53682

Nếu bạn đổi port SSH thì lệnh sẽ có dạng như sau

ssh [email protected] -p 6789 -L 53682:127.0.0.1:53682

Trong đó

  • 6789 là port SSH của bạn.
  • xx.yy.zz.xx bằng IP Hosting cPanel của các bạn

Ví dụ thực tế

image 122

Bây giờ bạn thực hiện chạy lại lệnh rclone config để bắt đầu setup từ đầu. Bên dưới là thông tin tôi thực hiện cấu hình và bạn hãy chú ý đến các dòng tôi tô màu đỏ, đó là các dòng quan trọng trong các bước cấu hình.

Và dòng Remote config Use auto config? bắt buộc bạn phải chọn Y (Yes) để hoàn tất.

:~# rclone config
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> remote
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / 1Fichier
    "fichier"
......................

13 / Google Drive
    "drive"

Storage> 13
** See help for drive backend at: https://rclone.org/drive/ **

Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default ("").
client_id> Nhấn Enter
Google Application Client Secret
Setting your own is recommended.
Enter a string value. Press Enter for the default ("").
client_secret> Nhấn Enter
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
    "drive"
 2 / Read-only access to file metadata and file contents.
    "drive.readonly"
   / Access to files created by rclone only.
...........................
scope> 1
ID of the root folder
Leave blank normally.

Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.

Note that if this is blank, the first time rclone runs it will fill it
in with the ID of the root folder.

Enter a string value. Press Enter for the default ("").
root_folder_id> Nhấn Enter
Service Account Credentials JSON file path
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file> Nhấn Enter
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n (Chọn N)
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y (Chọn Y)
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=iFXszgBgG7qX9I2hejnq2w
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a team drive?
y) Yes
n) No
y/n> n
--------------------
[remote]
type = drive
scope = drive
token = {"access_token":"ya29.a0AVvZVsol4MSZ_EluGXJVKRrZvaAO5JotII-T_sqKjVueX97L4AeUEZ_oYFcEPZEAqxyd3m3OPneiezJW5WCTGHZzYnGzLcsihkX9m0rFWVwZcpz8g5KJu-Itq_w6af_nMP8NtwIqJswmG1iOMQoEzrfvO_rfaCgYKAVYSARESFQGbdwaI7g_XnLnvHsFWo8rEbjwvww0163","token_type":"Bearer","refresh_token":"1//0egWT4wsFoweOCgYIARAAGA4SNwF-L9IrSNfh1nTzqbzGbjZtqPNvX8vRQ04a6RVR4CdEbiixscA8arQ5sOMF358xK68yL6U-VUk","expiry":"2023-02-17T04:38:46.338221125+01:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
remote               drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>

Khi bạn nhận được đường link http://127.0.0.1:53682/xxxx bạn hãy copy nó dán vào trình duyệt sau đó chọn tài khoản Google cần sử dụng. Ở bước này bạn cứ nhận Cho phép hoặc Tiếp tục để hoàn tất.

image 126

Và cuối cùng bạn nhận được thông báo Success! là hoàn tất bước tiếp lập. Ngay lúc này Rclone của bạn đã được kết nối và sẵn sàng sử dụng.

image 127

Bước 2: Tạo script Backup lên Drive

Bây giờ bạn cần tạo một script sau đó copy và dán script bên dưới vào. Ở đây tôi tạo file có tên rclone.sh

DOTRUNGQUAN.INFO
vi rclone.sh
    

Lưu ý: Thay MYSQL_PASSWORD="XXX" thành Passwd của user cPanel

DOTRUNGQUAN.INFO

#!/bin/bash
#Auth: DOTRUNGQUAN.INFO

SERVER_NAME=$(whoami) ## Tên thư mục trong Google Drive
TIMESTAMP=$(date +"%F")
BACKUP_DIR="$(whoami)/$TIMESTAMP"
MYSQL_USER=$(whoami)
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="XXX" ## Nhap Pass User cPanel 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";
# Loop through /home/$(whoami) directory
for D in /home/$(whoami)/*/; do
    if [ -d "${D}" ]; then #If a directory
        domain=${D%*/} # Domain name
        domain=${domain##*/} # Extract domain name from path
        echo "- $domain";
        zip -r $BACKUP_DIR/$domain.zip $D -q
    fi
done
echo "Backup Website Successful";
echo '';



echo "Dang tien hanh Backup len Google Drive";
/home/$(whoami)/rclone/rclone move $BACKUP_DIR "remote:$SERVER_NAME/$TIMESTAMP" >> /home/$(whoami)/rclone/rclone.log 2>&1  #remote: remote config name created in previous step.
# Clean up
rm -rf $BACKUP_DIR  #Delete backup directory on VPS
/home/$(whoami)/rclone/rclone -q --min-age 2w delete "remote:$SERVER_NAME" #Remove all backups older than 2 week on Google Drive Backup Directory
/home/$(whoami)/rclone/rclone -q --min-age 2w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 2 week Google Drive Backup Directory
/home/$(whoami)/rclone/rclone cleanup "remote:" #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."


    

Sau đó bạn phân quyền file bằng lệnh chmod +x rclone.sh Và chạy script

image 124

Sau khi chạy xong bên dưới là kết quả thực hiện.

image 123

Bước 3: Tạo cron backup tự động

Bây giờ bạn truy cập vào cPanel => Cron Jobs

image 129

Chọn lịch backup phù hợp và nhập vào lệnh sau. Nếu file script bạn đặt ở vị trí khác bạn cần sửa lại theo đường dẫn phù hợp

bash /home/$(whoami)/rclone.sh > /dev/null
image 130
Đỗ Trung Quân
WRITTEN BY

Đỗ Trung Quân

Nguồn nội dung này đến từ Website DoTrungQuan.info

Trả lời