Backup toàn bộ VPS lên Google Drive bằng Rclone

Backup toàn bộ VPS lên Google Drive với Rclone sẽ giúp bạn an tâm hơn trong việc duy trì và phát triển web.

Đối với một số phần mềm quản lý vps chạy webhosting thì được cài đặt sẵn các tính năng backup cho máy chủ ảo VPS. Chúng ta có thể backup ngay tại VPS hoặc đẩy sang VPS khác. Và chúng ta cũng có thể backup nó lên Google Drive / One Drive … nơi có dung lượng ổ chứa nhiều nhất có thể. Nhưng nếu bạn chạy các VPS trần với LAMP(Linux, Apache, MySQL, PHP) ; hay LEMP(Linux, Nginx, MariaDB, PHP) hoặc hocVPS hay VPSSIM thì chúng ta phải tự cài backup cho VPS của mình. Để backup toàn bộ VPS lên Google Drive hay One drive thì bạn nên cài Rclone.

Rclone là gì?

Rclone là một công cụ đồng bộ hóa dữ liệu tương tự Rsync nhưng lại được tập trung phát triển chức năng kết nối với các dịch vụ lưu trữ đám mây.

Ưu điểm của việc sử dụng dịch vụ lưu trữ đám mây đó là tốc độ cao (do có server được đặt trên khắp thế giới), an toàn dữ liệu (không lo ngại các vấn đề phần cứng, network) và nhất là hầu hết đều Free. Mình đặc biệt thích những thứ Free!

Rclone hỗ trợ rất nhiều dịch vụ Cloud thông dụng như:

  • Google Drive
  • Amazon S3
  • Openstack Swift / Rackspace cloud files / Memset Memstore
  • Dropbox
  • Google Cloud Storage
  • Amazon Drive
  • Microsoft OneDrive
  • Hubic
  • Backblaze B2
  • Yandex Disk
  • SFTP
  • The local filesystem

Giờ thay vì backup đưa lên VPS khác để lưu trữ, mình chuyển sang sử dụng Google Drive, dung lượng miễn phí 15GB, mua thêm cũng khá rẻ, chỉ 45k/tháng là được 100GB rồi. Nếu bạn có tài khoản Google Drive Unlimited còn gì tuyệt vời hơn. Bạn cần mua tài khoản Google Drive Unlimited giá rẻ thì liên hệ với chúng tôi nhé.

Hướng dẫn cài đặt Rclone

Cài đặt Rclone

Rclone là một chương trình dòng lệnh nên mình sẽ down xuống rồi di chuyển file chạy đến thư mục

/usr/sbin/

của VPS để sử dụng sau này.

Chú ý : Nếu bạn đã cài đặt phiên bản cũ, cũng chỉ cần chạy chuỗi lệnh dưới để update. Tham khảo Changelog các phiên bản.
– Cài đặt với phiên bản v1.42 hệ điều hành Linux 64bit

cd /root/
wget https://downloads.rclone.org/v1.42/rclone-v1.42-linux-amd64.zip
unzip rclone-v.zip \cp rclone-v-linux-amd64/rclone /usr/sbin/
rm -rf rclone-*

– Cài đặt với phiên bản v1.42 hệ điều hành Linux 32bit

cd /root/
wget https://downloads.rclone.org/v1.42/rclone-v1.42-linux-386.zip
unzip rclone-v.zip \cp rclone-v-linux-386/rclone /usr/sbin/
rm -rf rclone-*

Giờ bạn có thể sử dụng lệnh

rclone

Những câu lệnh thông dụng cho rclone

Các câu lệnh sử dụng Rclone thường có dạng như sau:

rclone command <parameters> <parameters…>

Trong đó command là câu lệnh, parameters là các tham số.

Một số lệnh thông dụng khi dùng Rclone:

  • rclone config – Cấu hình kết nối đến dịch vụ cloud.
  • rclone copy – Copy files từ server đến cloud, skip nếu đã tồn tại dữ liệu.
  • rclone sync – Synchronize giữa server và cloud, chỉ update dữ liệu trên cloud mà thôi.
  • rclone move – Move files từ server lên cloud.
  • rclone delete – Xóa dữ liệu của folder.
  • rclone purge – Xóa dữ liệu của folder và toàn bộ nội dung bên trong.
  • rclone mkdir – Tạo folder.
  • rclone rmdir – Xóa folder trống tại đường dẫn.
  • rclone rmdirs – Xóa toàn bộ folder trống tại đường dẫn. Bộ đếm thời gian bao gồm:
    • ms – Milliseconds
    • s – Seconds
    • m – Minutes
    • h – Hours
    • d – Days
    • w – Weeks
    • M – Months
    • y – Years
  • rclone check – Kiểm tra dữ liệu server và cloud có đồng bộ hay không.
  • rclone ls – Liệt kê toàn bộ dữ liệu gồm size và path.
  • rclone lsd – Liệt kê toàn bộ thư mục.
  • rclone lsl – Liệt kê toàn bộ dữ liệu gồm modification time, size và path.
  • rclone size – Trả về kích thước thư mục.

Backup VPS lên Cloud với Rclone

Cấu hình kết nối với Google Drive

Đầu tiên chúng ta sẽ cấu hình kết nối Rclone với Google Drive, việc này chỉ phải làm 1 lần duy nhất. Kết nối được tạo tên remote

Kết nối SSH với VPS rồi chạy lệnh:

rclone config

Bạn sẽ nhận được thông báo:

No remotes found – make a new one

, nhập

n

rồi nhấn Enter để tạo kết nối mới.

Ở dòng name bạn nhập

remote

để đặt tên cho kết nối, bạn có thể chọn tên nào cũng được.

Một danh sách các dịch vụ cloud xuất hiện, hãy chọn số. Bạn hãy nhìn xem Google Drive đang ở số nào. Số 13 là số thứ tự của nó bạn hãy gõ

13

, Google Drive rồi nhấn Enter.

Ở 2 dòng tiếp theo
Client ID

Client Secret
bạn hãy để trống nhấn Enter.

Mục

Scope that rclone should use when requesting access from drive

chọn 1 – drive

Tiếp theo, để trống với

ID of the root folder

Service Account Credentials JSON file path

Khi được hỏi

Use auto config?

hãy nhập

n

rồi nhấn Enter. Ngay lập tức, Rclone sẽ đưa ra một đường link, bạn có thể click thẳng vào đó hoặc copy rồi paste vào trình duyệt.

Giao diện sẽ xuất hiện như sau:

Nhấn nút Allow để đồng ý, sau đó bạn sẽ nhận được đoạn mã verification code như hình dưới:

Quay trở lại cửa sổ SSH, copy rồi paste code này vào dòng

Enter verification code>

rồi nhấn Enter.

Chọn n tức no đối với

Configure this as a team drive?

Rclone cần xác nhận thông tin một lần nữa, bạn nhấn

y

để đồng ý rồi nhấn

q

để thoát khỏi giao diện cấu hình kết nối.

Vậy là xong, giờ bạn có thể test với lệnh liệt kê thư mục trong kết nối

remote

rclone lsd remote:

Bạn cũng có thể thực hiện với các dịch vụ cloud hoặc drive khác như Amazon Drive/One Drive/Yandex

Tạo script backup toàn bộ VPS và upload lên Cloud

Script này được viết theo cấu trúc folder trên server do HocVPS Script quản lý.

– Tạo file backup.sh ở thư mục /root/

nano /root/backup.sh

Copy toàn bộ nội dung script bên dưới rồi paste vào (áp dụng với HocVPS Script 2.0 trở lên)

# HocVPS Script Plugin - Backup Server and Upload to Cloud

#!/bin/bash

SERVER_NAME=HOCVPS_BACKUP

TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0

mkdir -p "$BACKUP_DIR/mysql"

echo "Starting Backup Database";
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`

for db in $databases; do
	$MYSQLDUMP --force --opt $db | gzip > "$BACKUP_DIR/mysql/$db.gz"
done
echo "Finished";
echo '';

echo "Starting Backup Website";
# Loop through /home directory
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 "Finished";
echo '';

echo "Starting Backup Nginx Configuration";
cp -r /etc/nginx/conf.d/ $BACKUP_DIR/nginx/
echo "Finished";
echo '';

size=$(du -sh $BACKUP_DIR | awk '{ print $1}')

echo "Starting Uploading Backup";
/usr/sbin/rclone move $BACKUP_DIR "remote:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1
# Clean up
rm -rf $BACKUP_DIR
/usr/sbin/rclone -q --min-age 2w delete "remote:$SERVER_NAME" #Remove all backups older than 2 week
/usr/sbin/rclone -q --min-age 2w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 2 week
/usr/sbin/rclone cleanup "remote:" #Cleanup Trash
echo "Finished";
echo '';

duration=$SECONDS
echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."

Lưu ý:

  • Script trên sẽ back up toàn bộ database, mỗi database nén thành một file .gz, lưu trong thư mục mysql
  • Mỗi thư mục chứa website được nén lại thành 1 file .zip
  • Toàn bộ cấu hình Nginx của các website được lưu trong thư mục nginx
  • SERVER_NAME mặc định là HOCVPS_BACKUP, nếu muốn thay đổi folder trên Cloud bạn hãy thay đổi tham số này.
  • Muốn điều chỉnh thời gian xóa file backup, bạn sửa thông số ở dòng delete và rmdirs. Hiện tại, tự động xóa file/folder cũ hơn 2 tuần.

– Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát.

– Phân quyền cho script

chmod +x /root/backup.sh

– Vậy là xong rồi đó, giờ bạn có thể test lại bằng cách chạy lệnh:

/root/backup.sh

Thử kiểm tra trên Cloud xem có thư mục mới với dữ liệu backup chưa nhé, hoặc test với lệnh:

rclone lsl remote:HOCVPS_BACKUP

Nếu không có vấn đề gì sẽ thấy kết quả trả về có một thư mục là ngày hiện tại, bên trong có chứa file nén website (.zip), cấu hình Nginx (.conf) và database (.gz).

Tạo cronjob tự động backup hàng ngày

Giờ mình sẽ cho script tự động chạy lúc 2h00 sáng.

EDITOR=nano crontab -e

Dán nội dung sau vào cửa sổ Terminal

0 2 * * * /root/backup.sh > /dev/null 2>&1

Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát

Vậy là xong, cứ 2h sáng hàng ngày script sẽ tự động chạy, backup toàn bộ dữ liệu của VPS rồi upload lên Cloud. Đồng thời, dữ liệu backup trên VPS sẽ được xóa luôn sau khi upload xong.

Tải file backup từ Cloud xuống VPS

Cách đơn giản nhất để bạn khôi phục lại dữ liệu đó là tải file backup từ Cloud xuống máy tính, rồi tùy theo nhu cầu mà up trở lại lên VPS. Tuy nhiên, nếu muốn tải trực tiếp file backup về VPS, bạn có thể sử dụng luôn Rclone với câu lệnh copy.

Ví dụ tham khảo:

rclone copy “remote:/HOCVPS_BACKUP/2017-11-01” /root/

Lệnh trên sẽ copy folder 2017-11-01 trong thư mục HOCVPS_BACKUP trên Cloud về thư mục /root/ của VPS. Tốc độ upload và download từ Cloud đều rất nhanh.
Sau khi copy dữ liệu backup về VPS, bạn tiến hành giải nén file zip, copy thư mục web và nginx về đúng vị trí đồng thời tiến hành import database.

Trên đây là full bài viết về Backup toàn bộ VPS lên Google Drive với Rclone. Hy vọng nó sẽ giúp bạn thực hiện được thành công. Đảm bảo rằng VPS của mình luôn được backup hàng ngày(Một công việc quan trọng) .

Nếu bạn chưa có VPS giá rẻ hoặc muốn mua thêm để sử dụng vui lòng liên hệ với chúng tôi qua các thông tin sau:

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Scroll to Top