Giới thiệu Script Backup VPS trên Virtualizor sử dụng Proxmox – Giải pháp tối ưu cho quản trị viên

15 Tháng 3, 2025

Trong môi trường quản lý máy chủ ảo hóa, việc đảm bảo an toàn dữ liệu bằng cách sao lưu (backup) VPS thường xuyên là vô cùng quan trọng. Đặc biệt với nền tảng Virtualizor, một script backup hiệu quả có thể giúp bạn tự động hóa quy trình, giảm thiểu rủi ro mất dữ liệu và tối ưu hóa tài nguyên hệ thống.

Hôm nay, chúng tôi xin giới thiệu script backup VPS trên Virtualizor – một công cụ mạnh mẽ giúp bạn sao lưu nhanh chóng và an toàn với tính năng gửi thông báo trực tiếp qua Telegram.


1. Chức năng chính của script backup VPS

Tự động nhận diện và sao lưu VPS

  • Cho phép nhập VM_ID của VPS cần backup.
  • Xác định file disk của VPS tự động trong thư mục /dev/zvol/rpool/.

🔄 Tối ưu hiệu suất backup theo RAM hệ thống

  • Script tự động tính toán lượng RAM khả dụng, giữ lại 15% RAM để đảm bảo hệ thống không bị quá tải.
  • Lựa chọn block size (bs) phù hợp giúp quá trình backup đạt tốc độ cao mà không làm ảnh hưởng đến hiệu suất của server.

🚀 Nén dữ liệu hiệu quả với Pigz

  • Sử dụng Pigz (Parallel gzip) để nén file .img.gz, giúp tiết kiệm dung lượng lưu trữ mà vẫn đảm bảo tốc độ xử lý nhanh hơn gzip thông thường.

📊 Hiển thị tiến trình backup theo thời gian thực

  • Sử dụng pv (Pipe Viewer) để hiển thị tiến độ backup, giúp người dùng theo dõi quá trình sao lưu một cách trực quan.

📢 Gửi thông báo Telegram ngay sau khi backup

  • Thông báo lỗi khi backup thất bại (không tìm thấy file hoặc kích thước file không hợp lệ).
  • Thông báo thành công với đầy đủ thông tin:
    • VPS ID
    • Dung lượng RAM Server
    • Block Size sử dụng
    • Thời gian hoàn tất backup
    • Dung lượng file backup
    • Tốc độ backup trung bình

2. Cách sử dụng script backup VPS trên Virtualizor

🛠 Bước 1: Chuẩn bị môi trường

Trước khi chạy script, đảm bảo rằng hệ thống của bạn đã cài đặt Pigzpv. Nếu chưa, hãy cài đặt bằng lệnh:

apt update && apt install pigz pv -y  # Debian/Ubuntu
yum install pigz pv -y  # CentOS/RHEL

📝 Bước 2: Viết script file backupvps.sh

#!/bin/bash

# ==== CẤU HÌNH TELEGRAM BOT ====
TELEGRAM_BOT_TOKEN="xxxxxx"  
TELEGRAM_CHAT_ID="xxxxxx"  

# Hàm gửi thông báo Telegram
send_telegram() {
    MESSAGE="$1"
    FORMATTED_MESSAGE=$(echo -e "${MESSAGE}" | sed 's/\./\\./g; s/-/\\-/g')  # Escape dấu `.` và `-`
    curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
        -d chat_id="${TELEGRAM_CHAT_ID}" \
        -d text="${FORMATTED_MESSAGE}" \
        -d parse_mode="MarkdownV2"
}

# Nhập VM_ID
read -p "Nhập VM_ID cần backup: " VM_ID

# Xác định thư mục backup
BACKUP_DIR="/backup"
mkdir -p "$BACKUP_DIR"

# Tìm file disk của VPS trong /dev/zvol/rpool/
DISK_NAME=$(ls /dev/zvol/rpool/ | grep "^vm-${VM_ID}-" | head -n 1)

# Kiểm tra nếu không tìm thấy file
if [ -z "$DISK_NAME" ]; then
    MESSAGE="⚠ *Backup thất bại* ⚠\n❌ Không tìm thấy file disk cho VPS *${VM_ID}* trong */dev/zvol/rpool/*"
    send_telegram "$MESSAGE"
    echo "[❌] Không tìm thấy file disk cho VPS ${VM_ID} trong /dev/zvol/rpool/"
    exit 1
fi

# Đường dẫn đầy đủ của file disk
DISK_PATH="/dev/zvol/rpool/${DISK_NAME}"

# Lấy dung lượng RAM hệ thống
TOTAL_RAM=$(free -m | awk '/Mem:/ {print $2}')
AVAILABLE_RAM=$(free -m | awk '/Mem:/ {print $7}')  # Lấy RAM còn trống
RAM_LIMIT=$((AVAILABLE_RAM * 85 / 100))  # Giữ lại 15% RAM để tránh quá tải

# Chọn `bs` dựa trên RAM trống (ưu tiên không vượt 85% RAM)
if [ "$RAM_LIMIT" -lt 4096 ]; then
    BS_SIZE="4M"
elif [ "$RAM_LIMIT" -lt 16384 ]; then
    BS_SIZE="8M"
elif [ "$RAM_LIMIT" -lt 65536 ]; then
    BS_SIZE="16M"
elif [ "$RAM_LIMIT" -lt 256000 ]; then
    BS_SIZE="64M"
elif [ "$RAM_LIMIT" -lt 512000 ]; then
    BS_SIZE="128M"
else
    BS_SIZE="256M"
fi

echo "[🔄] RAM server: ${TOTAL_RAM}MB | RAM khả dụng: ${AVAILABLE_RAM}MB | Giữ lại 15% RAM → Chọn bs=${BS_SIZE}"

# Định dạng file backup
DATE_FULL=$(date "+%d-%m-%Y")  
TIME_FULL=$(date "+%H-%M-%S")  
OUTPUT_FILE="${BACKUP_DIR}/${VM_ID}--${DATE_FULL}--${TIME_FULL}.img.gz"

# Ghi nhận thời gian bắt đầu backup
START_TIME=$(date +%s)

# Bắt đầu backup từ ổ đĩa với pv để hiển thị tiến độ
echo "[*] Bắt đầu backup từ ${DISK_PATH} với bs=${BS_SIZE}..."
pv "$DISK_PATH" | dd bs=$BS_SIZE iflag=fullblock | pigz -9 > "${OUTPUT_FILE}"

# Ghi nhận thời gian kết thúc backup
END_TIME=$(date +%s)
ELAPSED_TIME=$((END_TIME - START_TIME))

# Kiểm tra kích thước file sau khi backup
BACKUP_SIZE=$(du -m "${OUTPUT_FILE}" | cut -f1)

echo "---------"

# Nếu file backup nhỏ hơn 1MB thì coi như lỗi
if [ "$BACKUP_SIZE" -lt 1 ]; then
    MESSAGE="⚠ *Backup thất bại* ⚠\n❌ Dữ liệu backup cho VPS *${VM_ID}* bị lỗi!"
    send_telegram "$MESSAGE"
    rm -f "${OUTPUT_FILE}"
    echo "[❌] Backup lỗi! Đã xoá file: ${OUTPUT_FILE}"
    exit 1
fi

echo "---------"

# Tính tốc độ backup (MB/s)
SPEED=$(echo "scale=2; $BACKUP_SIZE / $ELAPSED_TIME" | bc)

echo "---------"

# Gửi thông báo Telegram
MESSAGE="✅ *Backup VPS hoàn tất* ✅%0A%0A\
🖥 *VPS ID:* ${VM_ID}%0A\
💾 *Dung lượng RAM Server:* ${TOTAL_RAM}MB%0A\
⚙ *Block Size:* ${BS_SIZE}%0A\
⏳ *Thời gian backup:* ${ELAPSED_TIME} giây%0A\
💾 *Dung lượng file:* ${BACKUP_SIZE} MB%0A\
📂 *Đường dẫn:* ${OUTPUT_FILE}%0A\
🚀 *Tốc độ backup:* ${SPEED} MB/s"

send_telegram "$MESSAGE"

echo "---------"

echo "[✔] Backup hoàn thành: ${OUTPUT_FILE} (Kích thước: ${BACKUP_SIZE} MB)"

🛠 Bước 3: Chạy script backup

Mở terminal và chạy script bằng lệnh:

chmod +x backupvps.sh
./backupvps.sh

Sau đó, nhập VM_ID của VPS cần sao lưu.

🔍 Bước 4: Kiểm tra tiến trình backup

Trong quá trình chạy, script sẽ hiển thị thông tin như dung lượng RAM, block size được chọn, tiến độ backup, giúp bạn giám sát hiệu suất hệ thống.

📤 Bước 5: Nhận thông báo trên Telegram

Sau khi hoàn tất, bạn sẽ nhận được một thông báo trên Telegram với đầy đủ thông tin về file backup.


3. Lợi ích khi sử dụng script backup VPS

💡 Nhanh chóng & tự động hóa:

  • Giảm công sức thao tác thủ công, giúp quản trị viên tiết kiệm thời gian.

💡 An toàn dữ liệu:

  • Tránh rủi ro mất dữ liệu nhờ backup định kỳ và thông báo kịp thời khi có lỗi.

💡 Tối ưu hiệu suất:

  • Lựa chọn block size thông minh giúp cân bằng giữa tốc độ sao lưu và mức độ sử dụng tài nguyên hệ thống.

💡 Dễ dàng giám sát:

  • Kết hợp với Telegram giúp nhận thông báo ngay lập tức, hỗ trợ kiểm tra trạng thái backup từ xa.

4. Kết luận

Script backup VPS trên Virtualizor là một công cụ mạnh mẽ giúp quản trị viên hệ thống tiết kiệm thời gian, tối ưu tài nguyên và đảm bảo an toàn dữ liệu. Với khả năng gửi thông báo qua Telegram, tối ưu hiệu suất backup, đây là một giải pháp lý tưởng cho việc sao lưu VPS nhanh chóng và hiệu quả.

💾 Hãy thử ngay để bảo vệ dữ liệu của bạn một cách an toàn nhất! 🚀

Blog ..

Hướng dẫn dịch vụ ..

Sản phẩm nổi bật

dịch vụ chất lượng khách hàng tin tưởng

NVMe VPS

Tốc độ cao và bảo mật

Xem thêm

SSD VPS

Hiệu năng và tối ưu chi phí

Xem thêm

Proxy

Ẩn danh và mượt mà

Xem thêm

NVMe Hosting

Ổn định và tiện dụng

Xem thêm