Nếu bạn đang sử dụng Proxmox KVM và muốn chuyển đổi file backup dạng .vma.zst
sang định dạng .qcow2.gz
để sử dụng cho VPS chạy ảo hóa KVM, thì bài viết này sẽ hướng dẫn chi tiết từng bước. Đảm bảo bạn thực hiện đúng các bước để tránh mất mát dữ liệu.
File .vma.zst
là file backup được nén bằng định dạng Zstandard. Để bắt đầu, bạn cần giải nén nó:
zstd -d your-backup.vma.zst
Sau khi giải nén, bạn sẽ nhận được file có định dạng .vma
.
File .vma
không chỉ chứa dữ liệu ổ đĩa mà còn bao gồm metadata. Bạn cần trích xuất file disk image từ file này.
vma extract your-backup.vma -v output-directory/
Khi thực hiện lệnh trên, bạn sẽ thấy các file được trích xuất:
vm-100-disk-0.raw
).Hãy lưu ý vị trí của file disk image để sử dụng trong bước tiếp theo.
Định dạng .raw
không được tối ưu để sử dụng trên KVM, vì vậy bạn cần chuyển đổi nó sang định dạng .qcow2
.
qemu-img convert -f raw -O qcow2 vm-100-disk-0.raw vm-100-disk-0.qcow2
Kết quả sẽ là file vm-100-disk-0.qcow2
, đây là file disk image đã được chuyển đổi và có thể sử dụng trực tiếp với KVM.
Nếu bạn muốn tiết kiệm dung lượng lưu trữ, hãy nén file .qcow2
thành .qcow2.gz
:
gzip vm-100-disk-0.qcow2
Kết quả là file vm-100-disk-0.qcow2.gz
, bạn có thể sử dụng file này làm backup trên VPS KVM.
Để sử dụng file backup vừa chuyển đổi, hãy thực hiện các bước sau:
vm-100-disk-0.qcow2
(hoặc giải nén từ .qcow2.gz
) vào VPS:
zstd
)Chuyển đổi file backup từ Proxmox KVM sang KVM không quá phức tạp nếu bạn làm theo đúng hướng dẫn trên. Quá trình này bao gồm việc giải nén, trích xuất, chuyển đổi và cấu hình lại hệ thống. Hy vọng bài viết này giúp bạn thực hiện thành công và dễ dàng quản lý hệ thống VPS của mình!
#!/bin/bash
# Yêu cầu người dùng nhập tên file gốc
read -p "Hãy nhập tên file backup (.vma.zst): " BACKUP_FILE
# Kiểm tra xem file đã nhập hay chưa
if [ -z "$BACKUP_FILE" ]; then
echo "Error: Bạn chưa nhập tên file. Vui lòng thử lại."
exit 1
fi
# Kiểm tra xem file có tồn tại không
if [ ! -f "$BACKUP_FILE" ]; then
echo "Error: File '$BACKUP_FILE' không tồn tại!"
exit 1
fi
# Bước 1: Giải nén file .vma.zst
echo "[1/4] Giải nén file $BACKUP_FILE..."
zstd -d "$BACKUP_FILE" -o "${BACKUP_FILE%.zst}" || { echo "Error: Giải nén thất bại."; exit 1; }
# Bước 2: Trích xuất file disk image từ file .vma
VMA_FILE="${BACKUP_FILE%.zst}"
OUTPUT_DIR="xu-ly"
echo "[2/4] Trích xuất file disk image từ $VMA_FILE..."
# Xử lý nếu thư mục đã tồn tại
if [ -d "$OUTPUT_DIR" ]; then
echo "Thư mục $OUTPUT_DIR đã tồn tại. Đang xóa thư mục cũ..."
rm -rf "$OUTPUT_DIR" || { echo "Error: Không thể xóa thư mục $OUTPUT_DIR."; exit 1; }
fi
mkdir -p "$OUTPUT_DIR"
vma extract "$VMA_FILE" -v "$OUTPUT_DIR" || { echo "Error: Trích xuất thất bại."; exit 1; }
# Tìm file disk image (dạng .raw) trong thư mục output
RAW_FILE=$(find "$OUTPUT_DIR" -name '*.raw' | head -n 1)
if [ -z "$RAW_FILE" ]; then
echo "Error: Không tìm thấy file .raw sau khi trích xuất."
exit 1
fi
# Bước 3: Chuyển đổi file .raw sang .qcow2
echo "[3/4] Chuyển đổi file $RAW_FILE sang định dạng .qcow2..."
QCOW2_FILE="${RAW_FILE%.raw}.qcow2"
qemu-img convert -f raw -O qcow2 "$RAW_FILE" "$QCOW2_FILE" || { echo "Error: Chuyển đổi thất bại."; exit 1; }
# Bước 4: Nén file .qcow2 (tuỳ chọn)
echo "[4/4] Nén file $QCOW2_FILE thành .qcow2.gz..."
gzip "$QCOW2_FILE" || { echo "Error: Nén thất bại."; exit 1; }
# Thông báo hoàn tất
echo "Hoàn tất! File backup đã được chuyển đổi và nén thành: ${QCOW2_FILE}.gz"
exit 0
Chúc bạn thành công.