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ợ Duply và Duplicity 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
- Cấu hình rclone config cho Cloudflare R2
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>
và 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
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 webinolymv 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 filewebinoly_full_backup
, thư mục/root/Artalk,
/root/Umami,
/root/wg-easy
thành 1 file có trênbackup.tar
rclone copy backup.tar cloudflare-r2:cdn-bibica-net/xxxxxx--progress
-> chép filebackup.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 R2mv backup.tar backup_$(/bin/date +%d.%m.%Y).tar
-> đổi tên filebackup.tar
thành filebackup 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 filebackup có ngày tháng năm hiện tại
vào thư mụcwebinoly_full_backup
trên Google Driverclone delete google-drive:webinoly_full_backup --min-age 31d
-> xóa các file trongwebinoly_full_backup
có thời gian > 31 ngàyrm backup_$(/bin/date +%d.%m.%Y).tar webinoly_full_backup
-> xóa filewebinoly_full_backup
vàbackup 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ả
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)
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ớitar -xvf backup.tar
-> giải nén thư mục backup.tarmv /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ỗngsudo 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 😛
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!