NỘI DUNG
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.
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
- 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 userhosting@xx.yy.zz.xx -L 53682:127.0.0.1:53682
Nếu bạn đổi port SSH thì lệnh sẽ có dạng như sau
ssh userhosting@xx.yy.zz.xx -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ế
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.
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.
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
vi rclone.sh
Lưu ý: Thay MYSQL_PASSWORD="XXX"
thành Passwd của user cPanel
#!/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
Sau khi chạy xong bên dưới là kết quả thực hiện.
Bước 3: Tạo cron backup tự động
Bây giờ bạn truy cập vào cPanel => Cron Jobs
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