vSphere-Backup-Manager/vsphere_backup/README.md

58 lines
2.1 KiB
Markdown

# 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
```bash
python vsphere_backup.py --host vc.example.local --user administrator@vsphere.local --vm MyVM --dest /backups/MyVM --compress
```
Optional SFTP upload
```bash
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.
### Running with PM2 (Recommended for Linux production)
PM2 natively supports Python applications and can keep the server running across restarts.
1. **Install PM2** (requires Node.js):
```bash
npm install -g pm2
```
2. **Start the Web GUI**:
Using the provided `ecosystem.config.js`:
```bash
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:
```javascript
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`.