How to Create a Full Backup of a VMware Virtual Machine: Complete Disk Image Copy vs. Cloning


5 views

Many new VMware users confuse cloning with creating full disk backups. While cloning replicates VM settings and creates a new unique instance, what you need for emergency recovery is a complete byte-for-byte copy of the entire virtual disk (.vmdk file).

For a true backup solution, you'll want to copy these critical files from your VM directory:

VM_NAME.vmx      - Configuration file
VM_NAME.vmdk     - Virtual disk
VM_NAME.nvram    - BIOS settings
*.vmem           - Memory file (if present)
*.log            - Log files (optional)

1. Power off the VM completely (not suspended)
2. Locate the VM folder (default locations):
- Windows: C:\Users\[user]\Documents\Virtual Machines\
- Linux: /var/lib/vmware/Virtual Machines/
3. Copy the entire folder to your backup destination

For automated backups, you can use the VMware CLI tools. Example PowerShell script:

# PowerShell example for copying VM files
$vmPath = "C:\VMWare\MyVM\"
$backupPath = "D:\Backups\VM_$(Get-Date -Format 'yyyyMMdd')\"

if (-not (Test-Path $backupPath)) {
    New-Item -ItemType Directory -Path $backupPath
}

Copy-Item -Path "$vmPath\*" -Destination $backupPath -Recurse -Force

For greater portability, consider exporting as OVF (Open Virtualization Format):

vmware-vdiskmanager -r source.vmdk -t 1 destination.vmdk
ovftool --compress vi://user:password@host/VM_NAME backup.ova
  • Always verify checksums after copying (use certutil -hashfile on Windows)
  • Consider storage space - virtual disks can be large
  • For production environments, investigate VMware Data Protection
  • Document your recovery procedure

While not ideal for backups, cloning is perfect when you need:
- Multiple identical VMs for testing
- Quick deployment of standardized environments
- Development sandboxes that share a base configuration


When working with VMWare virtual machines in development environments, having a complete backup including OS, configurations, and installed software is crucial for disaster recovery. The "Clone" feature often causes confusion as it primarily duplicates VM settings rather than creating a full system image.

a) Full Clone: This creates an independent copy of the entire VM. Right-click your VM > Manage > Clone. Select "Full clone" option. Example CLI alternative:

vmrun -T ws clone "[OriginalVM].vmx" "[BackupVM].vmx" full

b) Snapshot Manager: While not a true backup, snapshots preserve state:

vmware-cmd [path-to-vmx] createsnapshot "BackupPoint" "Pre-update backup" 1 0

For true disk imaging (recommended for production environments):

  • Export as OVF: File > Export as OVF (portable format)
  • Manual file copy: Shut down VM and copy these files:
      
    *.vmx (configuration)  
    *.vmdk (virtual disk)  
    *.nvram (BIOS)  
    vmware.log (optional)  
    

For Linux hosts, here's a bash script to compress and backup entire VM:

#!/bin/bash  
VM_NAME="dev_environment"  
BACKUP_DIR="/mnt/backup_vms"  
TIMESTAMP=$(date +%Y%m%d_%H%M)  

vmrun stop "/path/to/$VM_NAME.vmx"  
tar -czvf "$BACKUP_DIR/${VM_NAME}_$TIMESTAMP.tar.gz" "/path/to/$VM_NAME/"  
vmrun start "/path/to/$VM_NAME.vmx"  

echo "Backup completed: $BACKUP_DIR/${VM_NAME}_$TIMESTAMP.tar.gz"

For development VMs, consider integrating with your CI/CD pipeline. Example Jenkins declarative pipeline snippet:

pipeline {  
    agent any  
    stages {  
        stage('Backup VM') {  
            steps {  
                sh 'vmrun suspend /vm/ci_runner.vmx'  
                sh 'vdiskmanager -clone /vm/ci_runner.vmdk /backup/ci_runner_${BUILD_ID}.vmdk'  
                sh 'vmrun start /vm/ci_runner.vmx'  
            }  
        }  
    }  
}
  • Always verify backup integrity with checksums
  • For active development VMs, use snapshot+clone combinations
  • Remember storage requirements grow with delta disk chains