vSphere-Backup-Manager/vsphere_backup
2026-06-21 12:22:22 +07:00
..
__pycache__ feat: implement Flask web UI for VM backup management and scheduling 2026-06-21 12:21:09 +07:00
templates feat: implement Flask web UI for VM backup management and scheduling 2026-06-21 12:21:09 +07:00
backup_core.py feat: implement Flask-based web UI for vSphere VM management, job scheduling, and NFS status monitoring 2026-06-21 04:02:24 +07:00
ecosystem.config.js feat: add PM2 ecosystem configuration and documentation for Web GUI deployment 2026-06-21 12:22:22 +07:00
gui_app.py feat: implement Flask web UI for VM backup management and scheduling 2026-06-21 12:21:09 +07:00
README.md feat: add PM2 ecosystem configuration and documentation for Web GUI deployment 2026-06-21 12:22:22 +07:00
requirements.txt feat: implement vSphere backup manager web interface with job tracking and dashboard functionality 2026-06-21 03:27:28 +07:00
vsphere_backup.py feat: implement vSphere backup manager web interface with job tracking and dashboard functionality 2026-06-21 03:27:28 +07:00

vSphere Snapshot Backup Tool

Simple CLI to automate the snapshot -> copy -> compress -> delete workflow for a VM on vCenter/ESXi.

Requirements

  • Python 3.8+
  • See requirements.txt (pyvmomi, requests, paramiko, zstandard)

Basic usage

python vsphere_backup.py --host vc.example.local --user administrator@vsphere.local --vm MyVM --dest /backups/MyVM --compress

Optional SFTP upload

python vsphere_backup.py --host vc.example.local --user admin --vm MyVM --dest /tmp/backups --sftp-host backup.example.com --sftp-user backup --sftp-password secret

Notes & caveats

  • The script creates a snapshot on the VM and downloads the VM's .vmdk and .vmx files from the datastore while the snapshot exists — do NOT copy .vmdk without snapshot.
  • The script attempts to use zstd -19 if available; otherwise it falls back to Python zstandard.
  • SSL verification is disabled with --no-verify-ssl for convenience with self-signed vCenter/ESXi certs.
  • Test carefully in dev before using in production. This is a minimal DIY backup tool and does not replace a full backup product.

Web GUI

A Flask-based web interface to manage your backups, schedules, and NFS mounts.

PM2 natively supports Python applications and can keep the server running across restarts.

  1. Install PM2 (requires Node.js):

    npm install -g pm2
    
  2. Start the Web GUI: Using the provided ecosystem.config.js:

    pm2 start ecosystem.config.js
    

    (Optional) If you are running inside a Python virtual environment (e.g. venv), edit ecosystem.config.js to uncomment and point the interpreter to your venv's python executable:

    interpreter: './venv/bin/python3'
    
  3. Useful PM2 Commands:

    • Status: pm2 status
    • Logs: pm2 logs vsphere-backup-gui
    • Restart: pm2 restart vsphere-backup-gui
    • Stop: pm2 stop vsphere-backup-gui
    • Setup auto-start on server boot: pm2 startup and then run the command it outputs, followed by pm2 save.