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.
/dev/zvol/rpool/
.Trước khi chạy script, đảm bảo rằng hệ thống của bạn đã cài đặt Pigz và pv. 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
#!/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)"
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.
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.
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.
💡 Nhanh chóng & tự động hóa:
💡 An toàn dữ liệu:
💡 Tối ưu hiệu suất:
💡 Dễ dàng giám sát:
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! 🚀
dịch vụ chất lượng khách hàng tin tưởng