Việc backup dữ liệu website là điều mà các webmaster thường xuyên phải làm để đảm bảo an toàn dữ liệu nếu chẳng may hệ thống bị tấn công. Nếu trước đây bạn quen sử dụng share hosting thì việc backup (sao lưu) đã có nhà cung cấp hosting lo cho rồi. Giờ chuyển sang dùng VPS thì bạn phải là người chủ động backup dữ liệu cho VPS của mình.
Trong bài viết trước mình có hướng dẫn bạn cách cài HocVPS để chạy web trên VPS rồi, bài này mình sẽ hướng dẫn bạn cách cài đặt tự động backup VPS lên Google Drive cho HocVPS để bạn không còn phải thường xuyên backup dữ liệu thủ công bằng tay nữa. Để làm được việc này chúng ta sẽ sử dụng công cụ có tên Rclone – công cụ giúp đồng bộ hóa dữ liệu có khả năng kết nối với các dịch vụ lưu trữ đám mây.
Rclone là gì?
Như đã nói ở trên Rclone là công cụ giúp đồng bộ hóa dữ liệu với ưu điểm là nó có khả năng kết nối với các dịch vụ lưu trữ đám mây. Điều này đảm bảo cho dữ liệu được an toàn (không lo các vấn đề lỗi phần cứng), sao lưu nhanh chóng với tốc độ cao (hầu hết các dịch vụ lưu trữ hiện nay đều có server ở khắp nơi). Điều đặc biệt nhất là nó miễn phí!
Rclone hiện tại hỗ trợ kết nối tới hầu hết các cloud server phổ biến hiện nay như:
- Amazon Drive
- Amazon S3
- DigitalOcean Spaces
- Dropbox
- Google Cloud Storage
- Google Drive
- Mega
- Microsoft Azure Blob Storage
- Microsoft OneDrive
Ngoài ra còn nhiều cloud khác được hỗ trợ bạn có thể xem thêm ở đây. Trong bài này mình sẽ hướng dẫn bạn cài đặt tự động backup VPS lên Google Drive. Vì Google Drive cho dung lượng miễn phí 15Gb, tốc độ rất nhanh. Bạn chỉ cần đăng ký Gmail là có luôn tài khoản Google Drive. Bây giờ bắt tay vào thực hiện thôi.
Cài đặt Rclone lên VPS
Trước hết chúng ta cần download Rclone về VPS sau đó di chuyển sang thư mục
/usr/sbin/
để sử dụng.
– Cài đặt Rclone v1.41 trên hệ điều hành 64bit
cd /root/ wget https://downloads.rclone.org/v1.41/rclone-v1.41-linux-amd64.zip unzip rclone-v*.zip \cp rclone-v*-linux-amd64/rclone /usr/sbin/ rm -rf rclone-*
– Cài đặt Rclone v1.41 trên hệ điều hành 32bit
cd /root/ wget https://downloads.rclone.org/v1.41/rclone-v1.41-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
để xem thêm thông tin.
Lưu ý: Nếu trên VPS của bạn đã cài đặt phiên bản cũ thì bạn chỉ cần chạy chuỗi lệnh trên để update. Tham khảo Changelog các phiên bản Rclone.
Hướng dẫn tạo kết nối VPS với Google Drive
Trước khi cài đặt tự động backup VPS lên Google Drive thì việc cần làm đó là kết nối VPS với Google Drive. Việc này bạn chỉ cần làm 1 lần và bạn làm như sau.
Đăng nhập VPS qua SSH rồi chạy lệnh:
rclone config
Nếu trên VPS của bạn chưa tạo kết nối nào thì sẽ nhận được thông báo
No remotes found - make a new one
Nhập
n
rồi ấn Enter để tạo kết nối mới
Dòng name bạn nhập tên kết nối là
remote
hoặc bất cứ tên nào cũng được.
Một danh sách các cloud server hỗ trợ hiện ra. Nhập vào
11
rồi ấn Enter để chọn kết nối Google Drive.
Tiếp theo nó sẽ hỏi
Client ID
và Client Secret
, bạn để trống rồi ấn Enter.
Đến phần
Scope that rclone should use when requesting access from drive
. Bạn chọn 1
– Full access all files…. Để cấp quyền truy cập toàn bộ file trên Google Drive.
Tiếp theo, mục
root_folder_id
và service_account_file
bạn để trống và ấn Enter
Nó sẽ hỏi
Use auto config?
bạn nhập n
rồi ấn Enter. Lúc này, Rclone sẽ hiển thị 1 đường link, bạn click vào đó để mở hoặc copy và mở trên trình duyệt.
Nó sẽ yêu cầu bạn đăng nhập vào tài khoản Google để cấp quyền truy cập Google Drive. Sau đó bạn click vào Cho phép.
Bạn sẽ nhận được 1 đoạn mã xác nhận như sau, hãy copy đoạn mã này.
Quay trở lại cửa sổ SSH và dán đoạn mã vào mục
Enter verification code
rồi ấn Enter.
Nó sẽ hỏi
Configure this as a team drive?
bạn hãy nhập n
rồi ấn Enter.
Rclone tiếp tục yêu cầu bạn xác nhận 1 lần cuối, bạn nhập
y
để đồng ý sau đó nhập q
để thoát.
Đối với các cloud server khác bạn có thể tham khảo cách làm ở đây.
Toàn bộ quá trình thực hiện kết nôi như sau (phần bôi đỏ là bạn cần nhập vào)
Xem toàn bộ quá trình thực hiện tạo kết nối
Như vậy là xong. Bây giờ bạn tạo 1 thư mục trên Google Drive sau đó dùng lệnh sau để kiểm tra xem nó đã kết nối với Google Drive chưa.
rclone lsd remote:
Nếu thấy kết quả tương tự như hình dưới là OK.
Tham khảo thêm: Backup website WordPress tự động bằng plugin miễn phí 100%
Tạo file backup toàn bộ VPS và upload lên Google Drive
Để hệ thống tự động tạo file backup VPS và upload lên Google Drive trong HocVPS script chúng ta sẽ sử dụng script tự động backup VPS của Luân Trần – tác giả của HocVPS Script.
Kịch bản của script này là:
- Backup toàn bộ database MySQL trên VPS, mỗi database được tạo thành 1 file .gz và lưu trong thư mục
mysql
- Backup toàn bộ code trong thư mục
/home/domain.com/public_html/
, mỗi code web tạo thành 1 file .zip - Backup toàn bộ file cấu hình Nginx trong thư mục
/etc/nginx/conf.d/
và lưu trong thư mụcnginx
- Tổng hợp tất cả các file backup vào 1 folder
- Tự động upload file backup lên Google Drive vào khoảng thời gian bạn đặt.
- Tự động xóa file backup trên VPS sau khi upload xong.
- Thiết lập thời gian tự động xóa file backup cũ trên Google Drive.
Bây giờ chúng ta bắt đầu thực hiện như sau.
– Tạo file
backup.sh
ở thư mục /root/
của VPS bằng lệnh sau:nano /root/backup.sh
– Copy và paste script bên dưới vào cửa sổ SSH (script á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=BACKUP_VPS 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 1w delete "remote:$SERVER_NAME" #Remove all backups older than 1 week /usr/sbin/rclone -q --min-age 1w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 1 week /usr/sbin/rclone cleanup "remote:" #Cleanup Trash echo "Finished"; echo ''; duration=$SECONDS echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
– Nhấn Ctrl+O rồi ấn Enter để lưu và Ctrl+X để thoát.
Lưu ý:
- SERVER_NAME mặc định là BACKUP_VPS, nếu muốn đổi tên thư mục trên Google Drive thì bạn sửa lại tên này.
- Bạn có thể thay đổi thời gian xóa file backup trên Google Drive bằng cách sửa thông số
1w
ở dòng--min-age 1w delete
và--min-age 1w rmdirs
. Hiện tại đang để là 1w – 1 tuần, bạn có thể sửa thành 2w – 2 tuần, 1d – 1 ngày,…
– Phân quyền cho file script
chmod +x /root/backup.sh
– Vậy là xong, giờ bạn có thể test bằng cách chạy lệnh:
/root/backup.sh
Sau khi chạy lệnh xong bạn đăng nhập vào Google Drive kiểm tra xem có thư mục và dữ liệu upload lên chưa hoặc dùng lệnh
rclone lsl remote:BACKUP_VPS
Nếu bạn thấy danh sách trả về là các file trong thư mục có dạng như bên dưới là bạn đã làm thành công.
- 2018-06-12/domain.com.zip
- 2018-06-12/nginx/domain.com.conf
- 2018-06-12/mysql/database.gz
Tạo cronjob tự động backup VPS theo lịch
Sau khi làm xong các bước trên thì chỉ khi nào bạn chạy lệnh
/root/backup.sh
thì VPS mới được backup. Vậy nên để nó hoạt động tự động theo lịch thì bạn cần thiết lập cronjob như sau.
Chạy lệnh sau để chỉnh sửa crontab
EDITOR=nano crontab -e
Dán nội dung sau vào cửa sổ SSH
0 2 * * 1,6 /root/backup.sh > /dev/null 2>&1
Nhấn Ctrl+O rồi ấn Enter để lưu và Ctrl+X để thoát.
Đoạn nội dung trên có nghĩa là script sẽ chạy tự động backup VPS và upload lên Google Drive vào lúc 2h sáng ngày thứ 2 và thứ 7 đồng thời tắt chức năng gửi email thông báo.
Lời kết
Như vậy là bài này mình đã hướng dẫn bạn cách cài đặt tự động backup VPS lên Google Drive cho HocVPS. Ngoài ra, nó cũng hỗ trợ backup dữ liệu lên nhiều cloud server khác nhưng mình không tiện viết trong này, bạn có thể tự tìm hiểu thêm hoặc cần thiết thì để lại comment mình sẽ hướng dẫn nhanh cho.
Việc backup dữ liệu thường xuyên là điều vô cùng quan trọng, mình đã từng chủ quan không backup dữ liệu để rồi khi web bị tấn công mã độc mình phải ngồi khắc phục lại toàn bộ dữ liệu web sau khi bị hack rất chi là mệt. Đó là còn may mình vẫn còn dữ liệu để khôi phục, còn không may thì bao nhiêu dữ liệu sẽ bay hết.
NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN