=============== LIBRARY RULES =============== From library maintainers: - This is unofficial documentation - always verify against official Veeam Help Center # Veeam Plug-in for Proxmox VE Veeam Plug-in for Proxmox VE is a software component integrated with Veeam Backup & Replication that provides enterprise-grade data protection and disaster recovery capabilities for Proxmox Virtual Environment. The plug-in enables backup, restore, and replication operations for Proxmox VE virtual machines, supporting both full and incremental backup methods with configurable retention policies, guest processing options, and application-aware backups for databases like Microsoft SQL Server, Oracle, and PostgreSQL. The plug-in supports comprehensive recovery scenarios including entire VM restore to Proxmox VE or cloud platforms (AWS, Azure, Google Cloud), instant VM recovery to VMware vSphere and Microsoft Hyper-V, file-level restore, application item recovery, and disk export/publishing. It integrates with existing Veeam infrastructure components including backup repositories, scale-out backup repositories, and Veeam Cloud Connect for offsite storage. The solution requires Proxmox VE versions 8.2-9.1 and Veeam Backup & Replication version 13.0.1.180 or later. --- ## Adding Proxmox VE Server to Backup Infrastructure Before creating backup jobs, you must add your Proxmox VE server to the Veeam backup infrastructure. This registers the server and discovers VMs available for protection. ```powershell # Example: Adding Proxmox VE server via Veeam PowerShell # Step 1: Create credentials for Proxmox VE server access $credential = Get-VBRCredentials -Name "proxmox-admin" # If credentials don't exist, add them first: # Add-VBRCredentials -Type Linux -User "root" -Password (ConvertTo-SecureString "password" -AsPlainText -Force) -Description "Proxmox VE Admin" # Step 2: Add Proxmox VE server to backup infrastructure # Via Veeam Console: # 1. Navigate to Inventory > Virtual Infrastructure # 2. Right-click "Proxmox VE" and select "Add Server" # 3. Enter server DNS name or IP: pve-cluster.example.com # 4. Select credentials (root or elevated user) # 5. Select storage for snapshots (file-level storage required) # 6. Complete wizard # Server connection settings: # - DNS/IP: pve-cluster.example.com # - Port: 8006 (default Proxmox API port) # - Credentials: SSH-type credentials (root or sudo-elevated user) # - TLS Certificate: Accept or install server certificate ``` --- ## Creating Backup Jobs Backup jobs define what VMs to protect, where to store backups, retention policies, and scheduling options. Each job can process multiple VMs but each VM can only be processed by one backup job at a time. ```powershell # Example: Creating a backup job via Veeam PowerShell # Step 1: Get the Proxmox VE server and VMs $proxmoxServer = Get-VBRServer -Type ProxmoxVe -Name "pve-cluster.example.com" $vmsToBackup = Find-VBRViEntity -Server $proxmoxServer -Name "web-server-01", "db-server-01" # Step 2: Select backup repository $repository = Get-VBRBackupRepository -Name "Backup-Repository-01" # Step 3: Create backup job $backupJob = Add-VBRViBackupJob -Name "Proxmox-Production-Backup" ` -Entity $vmsToBackup ` -BackupRepository $repository ` -Description "Daily backup of production Proxmox VMs" # Step 4: Configure retention policy (keep backups for 14 days) Set-VBRJobOptions -Job $backupJob -RetentionPolicy 14 # Step 5: Configure schedule (daily at 2:00 AM) Set-VBRJobSchedule -Job $backupJob ` -Daily ` -At "02:00" ` -DailyKind Everyday # Step 6: Enable the job Enable-VBRJob -Job $backupJob # Via Veeam Console wizard steps: # 1. Home > Backup Job > Virtual Machine > Proxmox VE # 2. General Settings: Name="Proxmox-Production-Backup", Description # 3. Virtual Machines: Add VMs, clusters, or resource pools # 4. Storage: Select repository, retention=14 days # 5. Guest Processing: Enable application-aware processing (optional) # 6. Schedule: Daily at 02:00, retry failed items 3 times # 7. Summary: Review and finish ``` --- ## Configuring Backup Destination and Retention Configure where backups are stored and how long they are retained. Supports standard repositories, deduplicating appliances, object storage, and scale-out backup repositories. ```powershell # Example: Configuring backup storage and retention settings # Get available backup repositories Get-VBRBackupRepository | Select-Object Name, Type, FreeSpace, TotalSpace # Output example: # Name Type FreeSpace TotalSpace # Backup-Repository-01 WinLocal 2.5 TB 4.0 TB # S3-Archive-Bucket AmazonS3 Unlimited Unlimited # NAS-Backup-Share LinuxLocal 8.0 TB 12.0 TB # Configure job with specific retention settings $job = Get-VBRJob -Name "Proxmox-Production-Backup" # Set retention policy: 14 restore points Set-VBRJobOptions -Job $job -RetentionPolicy 14 # Enable GFS (Grandfather-Father-Son) for long-term retention # Keep weekly backups for 4 weeks, monthly for 12 months, yearly for 3 years $gfsOptions = New-VBRGfsOptions ` -WeeklyEnabled -WeeklyKeep 4 ` -MonthlyEnabled -MonthlyKeep 12 ` -YearlyEnabled -YearlyKeep 3 Set-VBRJobOptions -Job $job -GfsOptions $gfsOptions # Backup file types created: # - VBK: Full backup file (complete VM image) # - VIB: Incremental backup file (changed blocks only) # - VBM: Metadata file (job info, restore points, structure) ``` --- ## Configuring Job Schedule Define when and how often backup jobs run. Supports daily, monthly, and periodic scheduling with automatic retry for failed VMs. ```powershell # Example: Configuring backup job schedules $job = Get-VBRJob -Name "Proxmox-Production-Backup" # Schedule Option 1: Daily at specific time Set-VBRJobSchedule -Job $job ` -Daily ` -At "02:00" ` -DailyKind Everyday # Schedule Option 2: Specific days of the week Set-VBRJobSchedule -Job $job ` -Daily ` -At "23:00" ` -DailyKind SelectedDays ` -Days Monday, Wednesday, Friday # Schedule Option 3: Monthly on specific day Set-VBRJobSchedule -Job $job ` -Monthly ` -At "01:00" ` -NumberInMonth First ` -Day Sunday # Schedule Option 4: Periodically (every N hours) Set-VBRJobSchedule -Job $job ` -Periodically ` -PeriodicallyKind Hours ` -FullPeriod 4 # Every 4 hours # Configure retry for failed VMs Set-VBRJobOptions -Job $job ` -RetryTimes 3 ` -RetryTimeout 10 # Minutes between retries ``` --- ## Enabling Guest Processing Enable application-aware processing for transactionally consistent backups of databases and applications. Supports Microsoft SQL Server, Oracle, PostgreSQL, and guest file system indexing. ```powershell # Example: Configuring guest processing options $job = Get-VBRJob -Name "Proxmox-Production-Backup" # Enable application-aware processing $guestOptions = New-VBRJobVssOptions ` -Enabled $true ` -IgnoreErrors $false # Configure guest OS credentials for application access $guestCredential = Get-VBRCredentials -Name "windows-admin" # Set guest processing options on job Set-VBRJobVssOptions -Job $job -VssOptions $guestOptions # For SQL Server transaction log backup: # - Enable "Truncate logs" to free space after backup # - Or "Backup logs" to capture transaction logs periodically # For Oracle archived redo logs: # - Enable log backup with specified interval # - Configure RMAN channel settings # For PostgreSQL WAL files: # - Enable WAL backup for point-in-time recovery # - Specify WAL archive location # Guest file system indexing (for file search during restore): # - Index everything (all files) # - Index selected file types (documents, emails, etc.) # - Malware detection during indexing # Requirements: # - QEMU Guest Agent must be installed and enabled on VMs # - Guest OS credentials with administrative access # - Network connectivity between backup server and guest OS ``` --- ## Creating VeeamZIP Backups Create immediate full backups without configuring backup jobs. Useful for ad-hoc backups, archiving VMs before decommissioning, or creating portable backup copies. ```powershell # Example: Creating VeeamZIP backup via Veeam PowerShell # Get the VM to backup $proxmoxServer = Get-VBRServer -Type ProxmoxVe -Name "pve-cluster.example.com" $vm = Find-VBRViEntity -Server $proxmoxServer -Name "test-vm-01" # Get destination repository $repository = Get-VBRBackupRepository -Name "Backup-Repository-01" # Create VeeamZIP backup Start-VBRZip -Entity $vm ` -Folder $repository ` -Compression 5 ` -DisableQuiesce:$false # Alternative destinations: # - Local folder: -Folder "D:\VeeamZIP\Backups" # - Network share: -Folder "\\fileserver\backups\veeamzip" # - Backup repository: -Folder $repository # Via Veeam Console: # 1. Inventory > Virtual Infrastructure > Proxmox VE # 2. Right-click VM > VeeamZIP # 3. Select destination (repository, local folder, or network share) # 4. Click OK to start backup # VeeamZIP backup location after completion: # Home > Backups > Disk (Exported) # Note: VeeamZIP creates independent full backup (VBK file) # No incremental chain - single restore point per backup ``` --- ## Performing Entire VM Restore Restore complete VMs from backups to original or new location. Supports restore to Proxmox VE from backups of Proxmox VE, VMware, Hyper-V, Nutanix AHV, and cloud workloads. ```powershell # Example: Restoring entire VM via Veeam PowerShell # Get backup and restore point $backup = Get-VBRBackup -Name "Proxmox-Production-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "web-server-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 # Option 1: Restore to original location Start-VBRViReplicaResync -RestorePoint $restorePoint -ToOriginalLocation # Option 2: Restore to new location with different settings $proxmoxServer = Get-VBRServer -Type ProxmoxVe -Name "pve-cluster.example.com" $targetStorage = Get-VBRViServerStorage -Server $proxmoxServer | Where-Object { $_.Name -eq "local-lvm" } Start-VBRRestoreVM -RestorePoint $restorePoint ` -Server $proxmoxServer ` -Datastore $targetStorage ` -VMName "web-server-01-restored" ` -PowerUp:$false # Via Veeam Console wizard: # 1. Home > Backups > right-click VM > Restore entire VM # 2. Select restore point (date/time) # 3. Choose restore mode: # - Restore to original location # - Restore to new location # 4. Select target cluster/node # 5. Select storage for VM disks # 6. Specify VM name (original or new) # 7. Configure network mapping # 8. Enter restore reason (for audit) # 9. Review summary and start restore # Supported source backup types: # - Proxmox VE VM backups # - VMware vSphere and Microsoft Hyper-V backups # - Nutanix AHV, oVirt KVM backups # - AWS, Azure, Google Cloud backups # - Veeam Agent backups (physical machines) ``` --- ## Performing Instant VM Recovery Instantly start a VM directly from its backup for immediate availability. The VM runs from the backup repository while data is migrated to production storage in the background. ```powershell # Example: Instant VM Recovery via Veeam PowerShell # Get backup and restore point $backup = Get-VBRBackup -Name "Proxmox-Production-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "critical-server-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 # Start Instant VM Recovery to VMware vSphere $vmwareServer = Get-VBRServer -Type ESXi -Name "esxi-host.example.com" $datastore = Get-VBRViServerDatastore -Server $vmwareServer | Where-Object { $_.Name -eq "datastore1" } Start-VBRInstantRecovery -RestorePoint $restorePoint ` -Server $vmwareServer ` -Datastore $datastore ` -VMName "critical-server-01-instant" ` -PowerOn:$true # Via Veeam Console: # 1. Home > Backups > right-click VM > Instant recovery # 2. Select target platform: # - VMware vSphere # - Microsoft Hyper-V # - Nutanix AHV # 3. Complete platform-specific wizard # 4. VM starts running directly from backup # After instant recovery: # - VM runs from backup repository (read-only) # - Use Storage vMotion (VMware) or live migration to move to production # - Or stop VM and perform full restore # Benefits: # - Near-zero RTO (Recovery Time Objective) # - Minimal downtime during disasters # - Test restores without full data transfer ``` --- ## Performing File-Level Restore Restore individual files and folders from VM backups without restoring the entire VM. Requires QEMU Guest Agent installed on VMs before backup. ```powershell # Example: File-level restore via Veeam PowerShell # Get backup and restore point $backup = Get-VBRBackup -Name "Proxmox-Production-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "file-server-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 # Start file-level restore session $flrSession = Start-VBRWindowsFileRestore -RestorePoint $restorePoint # Browse and restore files via Veeam Backup Browser # Files are presented as a mounted file system # Restore specific files $filesToRestore = @( "C:\Users\admin\Documents\important-file.docx", "C:\Data\database-config.xml" ) # Copy to target location Copy-VBRRestorePointFile -Session $flrSession ` -Path $filesToRestore ` -Destination "\\fileserver\restored-files\" ` -Overwrite:$false # Stop restore session when done Stop-VBRWindowsFileRestore -Session $flrSession # Via Veeam Console: # 1. Home > Backups > expand job > right-click VM # 2. Select "Restore guest files" # 3. Select restore point # 4. Browse files in Veeam Backup Browser # 5. Right-click files/folders > Copy to or Restore to # Requirements: # - QEMU Guest Agent installed and enabled before backup # - Mount host for Linux VMs (server to mount VM disks) # - Guest OS credentials for accessing files ``` --- ## Performing Application Item Restore Restore individual application items from Microsoft Active Directory, Exchange, SharePoint, SQL Server, and Oracle databases without full VM restore. ```powershell # Example: Application item restore via Veeam Console # Via Veeam Console: # 1. Home > Backups > expand job > right-click VM # 2. Select "Restore application items" # 3. Choose application type: # - Microsoft Active Directory # - Microsoft Exchange # - Microsoft SharePoint # - Microsoft SQL Server # - Oracle # Microsoft Active Directory restore: # - Restore users, groups, OUs, GPOs # - Compare with production AD # - Restore deleted objects # Microsoft Exchange restore: # - Restore mailboxes, folders, messages # - Export to PST file # - Restore to different mailbox # Microsoft SQL Server restore: # - Restore databases to original or different server # - Point-in-time restore using transaction logs # - Restore individual tables # Oracle Database restore: # - Restore databases # - Point-in-time recovery using archived redo logs # - Restore tablespaces # Note: Veeam Plug-in for Proxmox VE produces crash-consistent backups # Application-consistent backups may be required for some restore scenarios # Requires Veeam Explorers (included with Veeam Backup & Replication) ``` --- ## Exporting and Publishing Disks Export VM disks to VMDK, VHD, or VHDX format, or mount disks to any server for direct data access. ```powershell # Example: Disk export and publishing via Veeam PowerShell # Get backup and restore point $backup = Get-VBRBackup -Name "Proxmox-Production-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "vm-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 # Option 1: Export disks to VMDK format Start-VBRViDiskExport -RestorePoint $restorePoint ` -Disk "scsi0:0" ` -Format VMDK ` -Destination "D:\Exported-Disks\" # Option 2: Export to VHD/VHDX (for Hyper-V) Start-VBRViDiskExport -RestorePoint $restorePoint ` -Disk "scsi0:0" ` -Format VHDX ` -Destination "\\hyperv-host\disk-imports\" # Option 3: Publish disks for direct access (Data Integration API) $publishSession = Publish-VBRBackupContent -RestorePoint $restorePoint # Get mount path $mountPath = $publishSession.MountPath # Example: \\backup-server\VeeamFLR\vm-01_disk0\ # Access published disk via mount path # - Browse files directly # - Run antivirus scan # - Copy specific data # Unpublish when done Unpublish-VBRBackupContent -Session $publishSession # Via Veeam Console: # Export: Home > Backups > right-click VM > Export content as virtual disks # Publish: Home > Backups > right-click VM > Publish disks # Supported export formats: # - VMDK: VMware virtual disk # - VHD: Microsoft Hyper-V virtual disk (legacy) # - VHDX: Microsoft Hyper-V virtual disk (modern) ``` --- ## Restoring VMs to Cloud Platforms Restore Proxmox VE VMs to Amazon Web Services, Microsoft Azure, or Google Cloud Platform as native cloud instances. ```powershell # Example: Restore to cloud platforms via Veeam Console # Restore to Amazon EC2: # 1. Home > Backups > right-click VM > Restore to > Amazon EC2 # 2. Select AWS account and region # 3. Choose instance type # 4. Configure VPC, subnet, security groups # 5. Set storage type (EBS) # 6. Start restore # Restore to Microsoft Azure: # 1. Home > Backups > right-click VM > Restore to > Microsoft Azure # 2. Select Azure subscription and resource group # 3. Choose VM size # 4. Configure virtual network and subnet # 5. Set managed disk type # 6. Start restore # Restore to Google Cloud: # 1. Home > Backups > right-click VM > Restore to > Google Cloud # 2. Select GCP project and zone # 3. Choose machine type # 4. Configure VPC network # 5. Set persistent disk type # 6. Start restore # Prerequisites: # - Cloud provider accounts configured in Veeam # - Veeam Backup for AWS/Azure/Google Cloud (for cloud-native features) # - Network connectivity to cloud APIs # - Appropriate cloud IAM permissions ``` --- ## Copying Backups for Offsite Storage Create backup copies for disaster recovery and long-term retention in secondary locations using backup copy jobs. ```powershell # Example: Creating backup copy job via Veeam PowerShell # Get source backup $sourceBackup = Get-VBRBackup -Name "Proxmox-Production-Backup" # Get target repository (offsite/cloud) $targetRepository = Get-VBRBackupRepository -Name "DR-Site-Repository" # Create backup copy job $copyJob = Add-VBRViBackupCopyJob -Name "Proxmox-DR-Copy" ` -BackupJob $sourceBackup ` -Repository $targetRepository ` -Description "Offsite backup copy for disaster recovery" # Configure copy schedule Set-VBRBackupCopyJobSchedule -Job $copyJob ` -ScheduleMode Immediate # Copy as soon as source backup completes # Set retention for copies Set-VBRBackupCopyJobOptions -Job $copyJob -RetentionPolicy 30 # Enable GFS for long-term retention at DR site $gfsOptions = New-VBRGfsOptions ` -WeeklyEnabled -WeeklyKeep 8 ` -MonthlyEnabled -MonthlyKeep 24 ` -YearlyEnabled -YearlyKeep 5 Set-VBRBackupCopyJobOptions -Job $copyJob -GfsOptions $gfsOptions # Via Veeam Console: # 1. Home > Jobs > Backup Copy > Image-level backup # 2. Select source backup jobs # 3. Choose target repository # 4. Configure copy mode (immediate or scheduled) # 5. Set retention and GFS policies # 6. Enable and run job # Target repository options: # - On-premises backup repository # - Scale-out backup repository # - Veeam Cloud Connect (service provider) # - Object storage (S3, Azure Blob, etc.) ``` --- ## Backup Methods and Retention Configure backup chain methods (forever forward incremental vs. forward incremental) and retention policies to balance storage usage with recovery capabilities. ```powershell # Example: Configuring backup methods $job = Get-VBRJob -Name "Proxmox-Production-Backup" # Backup Method 1: Forever Forward Incremental (default) # - One full backup (VBK) + incremental chain (VIBs) # - Most storage efficient # - Automatic chain maintenance Set-VBRJobAdvancedStorageOptions -Job $job ` -EnableFullBackup:$false # Backup Method 2: Forward Incremental with periodic full backups # - Multiple full backups with incremental chains # - More reliable (multiple chain anchors) # - Requires more storage Set-VBRJobAdvancedStorageOptions -Job $job ` -EnableFullBackup:$true ` -FullBackupScheduleKind Weekly ` -FullBackupDays Saturday # Active Full Backup (reads all data from source) # - Creates complete new full backup # - Best for recovering from corruption Start-VBRJob -Job $job -FullBackup # Synthetic Full Backup (assembled from existing backups) # - No load on production environment # - Requires additional repository space during creation Set-VBRJobAdvancedStorageOptions -Job $job ` -EnableFullBackup:$true ` -TransformToSyntheticFull:$true ` -FullBackupScheduleKind Weekly ` -FullBackupDays Sunday # Retention policy settings: # - Restore points: Keep last N restore points # - Days: Keep restore points for N days # Minimum 3 restore points always maintained ``` --- ## Summary Veeam Plug-in for Proxmox VE provides comprehensive data protection for Proxmox Virtual Environment through integration with Veeam Backup & Replication. The solution covers the complete backup lifecycle from initial server configuration and backup job creation through various recovery scenarios including full VM restore, instant recovery, file-level restore, application item recovery, and cloud migration. Key features include flexible scheduling, configurable retention policies with GFS support for long-term archival, application-aware processing for database consistency, and backup copy jobs for offsite disaster recovery. The plug-in's recovery capabilities support multiple target platforms beyond Proxmox VE, enabling cross-platform migrations to VMware vSphere, Microsoft Hyper-V, Nutanix AHV, and major cloud providers (AWS, Azure, Google Cloud). This flexibility makes it suitable for hybrid cloud strategies, disaster recovery planning, and platform modernization projects. With support for Proxmox VE versions 8.2-9.1 and tight integration with Veeam Backup & Replication 13.x, the plug-in provides enterprise-grade reliability for organizations running virtualized workloads on Proxmox infrastructure.