Cấu hình backup Webinoly -> Rclone -> Cloudflare R2 và Google Drive

Webinoly có cơ chế backup và restore server toàn server rất hiệu quả, thời gian backup cực nhanh, nên hiện tại mình dùng để thay thế cho Duplicator Pro (chỉ backup được duy nhất WordPress)

Cloudflare R2 miễn phí 10GB space và hỗ trợ link trực tiếp, rất phù hợp cho việc sau này restore tự động

-> tạo 1 bản backup mới nhất lên Cloudflare R2

Google Drive do mình đang dùng gói có nhiều space, nên sẽ dùng nó chứa các bản backup hàng ngày, lưu trữ khoảng 31 bản backup gần nhất

-> lưu trữ 31 bản backup cho 31 ngày mới nhất lên Google Drive

Bản thân Webinoly cũng có hỗ trợ DuplyDuplicity cho việc này rồi, mà mình mù tịt về 2 thèng này 😀 hơi lười tìm hiểu, phần vì Rclone đã đáp ứng được các yêu cầu mình mong muốn, nên bài này mình dùng Rclone

Cài đặt Rclone

  • Cài đặt Rclone trên VPS
sudo -v ; curl https://rclone.org/install.sh | sudo bash

Dùng command rclone config sau đó làm tuần tự từng bước như giao diện trên màn hình

  • Hoặc có thể dùng nhanh các lệnh mình soạn sẵn
cd /root/.config/rclone
touch rclone.conf
nano rclone.conf
  • Nhập nội dung bên dưới, sửa 3 giá trị access_key_id, secret_access_key, endpoint của bạn vào
[cloudflare-r2]
type = s3
provider = Cloudflare
access_key_id = 6efd88705eab8b07ef45e6530fc544da
secret_access_key = a43f5718804b32045217069032d738b1577561ecd825b2607ab5d42e6a303c1e
region = auto
endpoint = https://c0c354807827046621d330d8b370f7a4.r2.cloudflarestorage.com

Bấm Ctrl+O -> Enter -> Ctrl+X để save và exit

File cấu hình Cloudflare R2 tên là cloudflare-r2

  • Cấu hình rclone config cho Google Drive

Đơn giản nhất là cấu hình thông qua bản Rclone trên PC

  • Download bản cài đặt cho Windows, giải nén ra, sau đó chạy các commands trên Windows tương tự như trên VPS

Các bước hơi dài dòng, nếu bạn chưa quen thì cứ làm từ từ như bên dưới

rclone config

Bấm n để tạo 1 cấu hình mới

Đặt tên google-drive

Type 18 để chọn dùng Google Drive

client_id>client_secret> bấm Enter để bỏ qua

Ấn 1 để chọn Full access all files, excluding Application Data Folder

service_account_file> bấm Enter để bỏ qua

Edit advanced config? bấm Enter để chọn No (default)

Use web browser to automatically authenticate rclone with remote? bấm Enter để chọn Yes (default)

Lúc này trình duyệt sẽ tự kết nối tới Google

2023 12 03 9 50 28

Chọn tài khoản muốn dùng rồi ấn Allow để đồng ý

Success!

All done. Please go back to rclone.

Configure this as a Shared Drive (Team Drive)? bấm Enter để chọn No (default)

Keep this "google-drive" remote? ấn Enter để chọn Yes this is OK (default)

Tiếp theo chạy lệnh

rclone config file

Nó sẽ hiện ra đường dẫn file cấu hình Rclone trên Windows

Configuration file is stored at:
C:\Users\bibica\AppData\Roaming\rclone\rclone.conf

Mở ra bạn sẽ thấy cấu hình tương tự như sau

[google-drive]
type = drive
scope = drive
token = {"access_token":"ya29.a0AfB_byAeD6ZO","token_type":"Bearer","refresh_token":"1//0ejEG80JYuwupCgYIARAAGA4SNwF-L9IrC","expiry":"2023-12-03T10:51:57.7840299+07:00"}
team_drive =

Bổ xung cấu hình này vào cấu hình rclone trên VPS 😛

[cloudflare-r2]
type = s3
provider = Cloudflare
access_key_id = 6efd88705eab8b07ef45e6530fc544da
secret_access_key = a43f5718804b32045217069032d738b1577561ecd825b2607ab5d42e6a303c1e
region = auto
endpoint = https://c0c354807827046621d330d8b370f7a4.r2.cloudflarestorage.com

[google-drive]
type = drive
scope = drive
token = {"access_token":"ya29.a0AfB_byAeD6ZO","token_type":"Bearer","refresh_token":"1//0ejEG80JYuwupCgYIARAAGA4SNwF-L9IrC","expiry":"2023-12-03T10:51:57.7840299+07:00"}
team_drive =

Tạo file bash để tự backup

Có thể tạo các lệnh bên dưới thành 1 file tên là backup_moi_ngay.sh, upload nó vào thư mục root cũng được

#!/bin/bash

# backup mỗi ngày toàn trang
sudo webinoly -backup=local -export
mv webinoly_full_backup_* webinoly_full_backup
tar -cvf backup.tar /root/Artalk /root/Umami /root/wg-easy webinoly_full_backup
rclone copy backup.tar cloudflare-r2:cdn-bibica-net/xxxxxx--progress
mv backup.tar backup_$(/bin/date +%d.%m.%Y).tar
rclone copy backup_$(/bin/date +%d.%m.%Y).tar google-drive:webinoly_full_backup --progress
rclone delete google-drive:webinoly_full_backup --min-age 31d
rm backup_$(/bin/date +%d.%m.%Y).tar webinoly_full_backup

Phân quyền để file có thể chạy

chmod +x /root/backup_moi_ngay.sh

Ý nghĩa cụ thể như sau:

  • sudo webinoly -backup=local -export -> tạo backup toàn server theo cấu hình của webinoly
  • mv webinoly_full_backup_* webinoly_full_backup -> đổi tên file backup về webinoly_full_backup
  • tar -cvf backup.tar /root/Artalk /root/Umami /root/wg-easy webinoly_full_backup -> nén file webinoly_full_backup, thư mục /root/Artalk, /root/Umami,/root/wg-easythành 1 file có trên backup.tar
  • rclone copy backup.tar cloudflare-r2:cdn-bibica-net/xxxxxx--progress -> chép file backup.tar lên Cloudflare R2
    Do chỉ cần 1 bản, nên nó sẽ tự ghi đè các bản cũ, không cần xử lý thêm gì trên Cloudflare R2
  • mv backup.tar backup_$(/bin/date +%d.%m.%Y).tar -> đổi tên file backup.tar thành file backup có ngày tháng năm hiện tại (để bạn biết file backup này của ngày nào)
  • rclone copy backup_$(/bin/date +%d.%m.%Y).tar google-drive:webinoly_full_backup --progress -> chép file backup có ngày tháng năm hiện tại vào thư mục webinoly_full_backup trên Google Drive
  • rclone delete google-drive:webinoly_full_backup --min-age 31d -> xóa các file trong webinoly_full_backup có thời gian > 31 ngày
  • rm backup_$(/bin/date +%d.%m.%Y).tar webinoly_full_backup -> xóa file webinoly_full_backupbackup có ngày tháng năm hiện tại đi cho nhẹ VPS

Tạo cron để tự chạy file bash này mỗi ngày lúc 1h sáng

crontab -l > full_back_up
echo "0 1 * * * /root/backup_moi_ngay.sh" >> full_back_up
crontab full_back_up

Thành quả

2023 12 04 11 57 58

Mỗi ngày lúc 1h sáng, Webinoly tự tạo backup và 1 số addon khác, upload 1 bản mới nhất lên Cloudflare R2, 1 bản lên Google Drive (duy trì tối đa 31 bản cho 31 ngày)

2023 12 03 1

Khá bất ngờ vì khi upload trực tiếp bằng Rclone lên Google Drive nó nhanh hẳn luôn, trước đây dùng Duplicator Pro upload lên Google Drive, khoảng 800 MB mất trung bình 5 phút, bây giờ upload 3.5GB mà chỉ mất 2 phút 25s 😀

Bạn có thể chỉ upload backup vào 1 dịch vụ như Google Drive hoặc Cloudflare R2, có điều cá nhân mình quan điểm, backup là phải ở nhiều nơi, nó mới có ý nghĩa là backup sơ cua, tin tưởng quá vào 1 dịch vụ, tới lúc họ sập thì mệt mỏi lắm, nên mới upload 2 lần như này :]]

Vấn đề băng thông thì cũng không đáng kể lắm, đa phần các gói rẻ nhất hiện tại thường cũng cho 1000GB băng thông mỗi tháng, backup hàng ngày mất khoảng 10GB, 1 tháng tầm 300GB, vẫn dư giả để dùng

Tổng thời gian hoàn thành toàn bộ quá trình backup mất khoảng 7-8 phút, khá hài lòng với kết quả này

Tạo file bash để tự restore

Trong trường hợp bạn chuyển VPS sang dịch vụ khác, hoặc reinstall OS, cài lại trên VPS cũ thì có thể tạo 1 file bash tự restore lại toàn bộ server cũ như sau

Có thể tạo các lệnh bên dưới thành 1 file tên là restore.sh upload nó vào thư mục root cũng được

#!/bin/bash

# Webinoly Restore
sudo wget -qO weby qrok.es/wy && sudo bash weby -clean
sudo wget --no-check-certificate https://cdn.bibica.net/xxxxxx/backup.tar
tar -xvf backup.tar
mv /root/root/Artalk /root/Artalk
mv /root/root/Umami /root/Umami
mv /root/root/wg-easy /root/wg-easy
rm -r /root/root
sudo webinoly -backup=local -import=full -file=/root/webinoly_full_backup
rm backup.tar webinoly_full_backup

Phân quyền và chạy restore

chmod +x /root/restore.sh
/root/restore.sh

Ý nghĩa cụ thể như sau:

  • sudo wget -qO weby qrok.es/wy && sudo bash weby -clean -> chỉ cài đặt duy nhất Webinoly (không cài bất cứ addon nào)
  • sudo wget --no-check-certificate https://cdn.bibica.net/xxxxxx/backup.tar -> kéo file backup.tar về VPS mới
  • tar -xvf backup.tar -> giải nén thư mục backup.tar
  • mv /root/root/Artalk /root/Artalk -> đổi lại đường dẫn thư mục Artalk về chính xác như bản cũ
  • rm -r /root/root -> xóa thư mục root rỗng
  • sudo webinoly -backup=local -import=full -file=/root/webinoly_full_backup -> import toàn bộ backup cũ vào Webinoly (bao gồm toàn bộ các cấu hình Webinoly cũ, cấu hình Nginx, PHP, MySQL, Domain, Data và database của từng domain)
  • rm backup.tar webinoly_full_backup -> xóa các file backup cũ đi cho nhẹ VPS mới

Nếu bạn cài đặt thông thường, thì chỉ cần chạy dòng 4,5,11 là đủ

Bổ xung

Có 3 phần mình thấy Webinoly không chép sang là cấu hình PHP (/etc/php/7.4/fpm/php.ini), MySQL (/etc/mysql/my.cnf) và Crontabs (/var/spool/cron/crontabs/root)

Ở bước tạo backup và restore, bạn có thể bổ xung thêm 3 file này, để việc chuyển server hoàn hảo hơn 😀

Bạn cũng có thể tùy biến rộng ra, cấu hình thêm gì thì lưu nó vào 1 thư mục cụ thể, để backup và restore không sót

Monitor

Cá nhân mình rất thích các thông báo từ Telegram, có thể cấu hình thêm 1 tẹo để việc thông báo hiệu quả hơn

Ví dụ như ở cấu hình backup ở trên, có thể bổ xung thời gian hoàn thành việc chạy các lệnh, sau đó gửi thông báo tới Telegram

#!/bin/bash

start=`date +%s`

# Tạo backup mỗi ngày trên VPS

# Chuyển backup mỗi ngày vào Google Drive _webinoly_full_backup_daily

# Tạo thêm 1 bản backup mới nhất vào _webinoly_direct_link_setup

# Xóa các file backup cũ trên VPS

end=`date +%s`
runtime=$((end-start))

# Set up Telegram bot API and chat ID
BOT_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
CHAT_ID="yyyyyyyyy"

MESSAGE="Đã tạo backup lên Google Drive, tổng thời gian: $runtime giây"
curl -s -X POST https://api.telegram.org/bot$BOT_API_KEY/sendMessage -d chat_id=$CHAT_ID -d text="$MESSAGE"

Sau khi chạy xong, ta sẽ nhận được 1 thông báo từ Telegram như sau

Đã tạo backup lên Google Drive, tổng thời gian: 83 giây

Dựa vào thời gian hoàn thành, ta có thể biết được VPS đang dùng, hiệu năng CPU, HDD, SPEED …. có bị nhà cung cấp bóp lại không

Kiểu bình thường chạy backup chỉ mất tầm 80-90s, thời gian sau thông báo 150s mới xong, rõ ràng CPU, HDD, SPEED …. đang có vấn đề, vào kiểm tra lại là được

Có thêm thông báo như này tiện và dễ quản lý hơn

Kết luận

Việc cấu hình Rclone, tạo các file bash cho phần backup và restore theo mình là hơi phức tạp, mình cũng đã cố gắng giải thích từng dòng lệnh nhỏ, để mọi người có thể đọc hiểu, tùy biến dùng lại trên các trang khác

Bù lại cho điểm này, bạn chỉ phải làm 1 lần, sau đó cả server của bạn sẽ luôn được backup ổn định, hệ thống có vấn đề gì, đều có thể giải quyết được

Trước giờ mình vẫn đánh giá rất cao Webinoly, chính vì thế sau 5-6 năm mình vẫn dùng rất thường xuyên, mà sau khi trải nghiệm cơ chế backup và restore server toàn server siêu đơn giản của họ, chắc mình sẽ chuyển sang dùng hẳn Webinoly luôn 😛

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback.
Notes: However, those deemed to be spam or solely promotional will be deleted.

You can create a Gravatar account, add avatar, then use that email to comment here, your account will have a more beautiful Avatar, easier to recognize with other members.

Please use real emails, you can receive notifications when comments are replied