remote-backups.comremote-backups.com
Contact illustration
Sign In
Don't have an account ?Sign Up

Proxmox Backup Client for Windows: PBS Backup Guide

  • February 25, 2026
  • 10 min read
Table of Contents
Bennet Gallein
Bennet Gallein
remote-backups.com operator

Proxmox Backup Server handles VM and container backups well. But if you run bare-metal Windows servers alongside your Proxmox cluster, you have a problem: there is no official Proxmox Backup Client for Windows. Proxmox provides proxmox-backup-client for Debian-based systems only.

A community project changes that. tizbac/proxmoxbackupclient_go is a Golang reimplementation of the PBS client protocol. It runs natively on Windows, supports VSS snapshots for crash-consistent backups, and pushes data directly to your PBS datastore. Same deduplication. Same encryption. No intermediate storage needed.

This is alpha software. It works, but it has not seen the years of production hardening that the official Linux client has. Treat it accordingly.

Key Takeaways
  • The Golang PBS client enables direct Windows-to-PBS backup without intermediate storage
  • VSS (Volume Shadow Copy Service) support ensures consistent backups of open files and databases
  • Alpha software — test thoroughly on non-critical systems before production use
  • Client-side encryption and deduplication work the same as the official Linux client
  • Alternative path: Windows → SFTP/Borg → PBS for those who prefer battle-tested tools

Why Back Up Windows to PBS?

Most mixed environments end up with two completely separate backup stacks: PBS for Proxmox VMs, and something else for Windows. That means two retention policies, two monitoring dashboards, two restore procedures to document, and two systems to maintain.

Backing up Windows servers to Proxmox Backup Server eliminates that split. Your Windows file servers, Active Directory controllers, and SQL Server hosts land in the same datastores as your VM backups. PBS deduplication works across all of it. A Windows file server sharing common OS files with other Windows backups will see the same chunk-level dedup savings you get with VMs.

You also get PBS features for free: centralized retention policies, backup verification, and offsite sync to a remote PBS instance. One system to maintain. One restore procedure.

The alternatives each have trade-offs. Veeam Agent for Windows works but requires licensing. Windows Server Backup writes to local disks or network shares with no deduplication. Backing up via WSL or Cygwin-based Borg adds complexity and fragility. Direct PBS integration is the cleanest path if the client is reliable enough for your use case.

The Golang Client

The project lives at tizbac/proxmoxbackupclient_go on GitHub. Written in Go, it compiles to a single static binary on Windows, Linux, and macOS. No runtime dependencies, no installer.

It implements the PBS backup protocol directly: chunking, deduplication, upload, and catalog generation. The server sees these backups the same way it sees backups from the official client. You can browse, verify, and restore them from the PBS web UI.

The key feature for Windows is VSS (Volume Shadow Copy Service) integration. Without VSS, backing up a running Windows system risks capturing files mid-write. Databases, registry hives, and open documents would be inconsistent. VSS coordinates with applications to create a point-in-time snapshot before the backup reads any data.

The client is CLI-only. There is no GUI, no Windows service, no tray icon. You run it from PowerShell or cmd, and schedule it with Task Scheduler. Development is active but the feature set is still limited compared to the official client.

Alpha Software

This client is community-developed and in alpha. The developer takes no responsibility for data loss. Test on non-critical systems first. Always maintain an alternative backup for anything you cannot afford to lose.

Prerequisites

Before You Start
15 minutesintermediate

Installation

Install the Golang PBS Client
1
Download the binary

Go to the GitHub releases page and download the latest Windows binary (proxmox-backup-client-go_windows_amd64.exe). Place it in a permanent location like C:\Tools\pbs-client\.

2
Verify the binary runs

Open PowerShell and confirm it executes.

3
Set environment variables

The client reads connection details from environment variables. Set them system-wide so Task Scheduler can use them later.

Verify the binary:

powershell
C:\Tools\pbs-client\proxmox-backup-client-go.exe --version
Verify installation

Set the environment variables:

powershell
[System.Environment]::SetEnvironmentVariable(
  "PBS_REPOSITORY",
  "backup-user@pbs!token@192.168.1.50:8007:your-datastore",
  "Machine"
)

[System.Environment]::SetEnvironmentVariable(
  "PBS_PASSWORD",
  "your-api-token-secret",
  "Machine"
)

[System.Environment]::SetEnvironmentVariable(
  "PBS_FINGERPRINT",
  "AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99",
  "Machine"
)
Set PBS environment variables (run as Administrator)

The PBS_REPOSITORY format is user@realm!tokenname@host:port:datastore. Replace the values with your actual PBS credentials. Restart your PowerShell session after setting these.

First Backup

Run Your First Windows Backup
1
Run a basic backup

Start with a single directory to confirm everything connects properly. Back up a test folder first before targeting entire volumes.

2
Back up with VSS

For production use, always enable VSS. This ensures open files (databases, logs, registry) are captured in a consistent state.

3
Verify in the PBS UI

Open the PBS web interface, navigate to your datastore, and confirm the backup appears under the host's backup group. Check the size and chunk deduplication ratio.

4
Test a restore

A backup you have never restored is a backup you cannot trust. Pull a file back to confirm the data is intact.

Test backup of a single directory:

powershell
proxmox-backup-client-go.exe backup `
  test-data.pxar:C:\Users\Administrator\Documents
Basic test backup

Full volume backup with VSS:

powershell
proxmox-backup-client-go.exe backup `
  system.pxar:C:\ `
  --vss
Full C: drive backup with VSS

Restore a single file to verify:

powershell
proxmox-backup-client-go.exe restore `
  system.pxar `
  C:\Restore\test\ `
  --archive-path "Users/Administrator/Documents/test-file.txt"
Restore a file from the latest snapshot
Deduplication Kicks In on the Second Run

The first backup uploads all data. Every subsequent backup only transfers changed chunks. A daily backup of a 200 GB Windows server that changes 2-5 GB per day will complete in minutes after the initial seed. Use the initial seed calculator to estimate your first upload time.

Scheduling with Task Scheduler

Running backups manually defeats the purpose. Use Windows Task Scheduler to automate daily runs.

Create a PowerShell wrapper script that logs output:

powershell
$logFile = "C:\Tools\pbs-client\logs\backup-$(Get-Date -Format 'yyyy-MM-dd').log"
New-Item -ItemType Directory -Force -Path "C:\Tools\pbs-client\logs" | Out-Null

& "C:\Tools\pbs-client\proxmox-backup-client-go.exe" backup `
  system.pxar:C:\ `
  --vss `
  *>&1 | Tee-Object -FilePath $logFile

if ($LASTEXITCODE -ne 0) {
  Write-EventLog -LogName Application -Source "PBS Backup" `
    -EventId 1001 -EntryType Error `
    -Message "PBS backup failed. See $logFile"
}
C:\Tools\pbs-client\backup.ps1

Register the scheduled task:

powershell
$action = New-ScheduledTaskAction `
  -Execute "powershell.exe" `
  -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Tools\pbs-client\backup.ps1"

$trigger = New-ScheduledTaskTrigger -Daily -At 2:00AM

$settings = New-ScheduledTaskSettingsSet `
  -StartWhenAvailable `
  -DontStopOnIdleEnd `
  -AllowStartIfOnBatteries

Register-ScheduledTask `
  -TaskName "PBS Backup" `
  -Action $action `
  -Trigger $trigger `
  -Settings $settings `
  -User "SYSTEM" `
  -RunLevel Highest
Create scheduled task (run as Administrator)

Run at 02:00 when user activity is low and disk I/O from VSS snapshots won't impact production workloads. The -StartWhenAvailable flag ensures the task runs after a missed schedule (e.g., server reboot during the backup window).

Encryption

The Golang client supports the same client-side encryption as the official Linux client: AES-256-GCM. Data is encrypted before it leaves your Windows server. The PBS server stores only ciphertext and cannot read your backup contents.

Generate an encryption key and pass it to the client:

powershell
# Generate a key (or use an existing one from your Linux PBS client)
proxmox-backup-client-go.exe key create C:\Tools\pbs-client\encryption-key.json

# Set the key path as environment variable
[System.Environment]::SetEnvironmentVariable(
  "PBS_ENCRYPTION_PASSWORD",
  "your-key-passphrase",
  "Machine"
)

# Run backup with encryption
proxmox-backup-client-go.exe backup `
  system.pxar:C:\ `
  --vss `
  --keyfile C:\Tools\pbs-client\encryption-key.json
Set encryption key

If you already use client-side encryption on your Linux backups, you can use the same key. Copy the key file from your Linux host and use it on Windows. The encryption format is identical.

Key Loss = Data Loss

If you lose the encryption key, the backups are gone. There is no recovery mechanism. Store the key file and its passphrase outside the Windows server being backed up. A password manager, a separate secure share, or printed paper in a safe all work. Do not store the only copy on the machine you are backing up.

Limitations and Alternatives

Advantages

  • Direct PBS integration

    Backups appear natively in PBS UI. Same dedup, verification, and sync as Linux clients.

  • VSS support

    Consistent snapshots of open files including databases and system state.

  • Client-side encryption

    AES-256-GCM, same format as the official client.

  • Free and open source

    No licensing costs. MIT license.

  • Single binary

    No installer, no dependencies, no runtime. Copy and run.

Limitations

  • Alpha quality

    Limited production testing. Expect rough edges and potential bugs.

  • CLI only

    No GUI, no service management. Everything via command line and Task Scheduler.

  • No official support

    Community project. If it breaks, you are on your own (or file a GitHub issue).

  • Limited documentation

    README covers basics. Advanced scenarios require reading the source or experimenting.

  • No bare-metal restore

    Backs up files and directories. Cannot restore a full Windows installation from scratch.

If the alpha status is a dealbreaker, there are alternatives:

Veeam Agent for Windows (free/paid) handles full image-level backup with bare-metal restore. The free tier limits you to one backup job. It does not integrate with PBS.

Borg via WSL lets you run Borg Backup inside Windows Subsystem for Linux, then use PBS to pull from a Borg datastore. Works, but WSL adds a layer of complexity and does not support VSS.

SFTP target — configure Windows backup software to write to an SFTP server that PBS can ingest. Indirect, but uses proven tools at every step.

Run Windows as a VM — if possible, the simplest answer. Convert bare-metal Windows to a Proxmox VM and back it up like any other VM. PBS handles the rest. Not always feasible for hardware-dependent workloads or licensing constraints.

Frequently Asked Questions

Yes. The Golang client produces backups in the same format. Both clients can back up to the same datastore. PBS treats them identically for deduplication, verification, and retention.

VSS coordinates with VSS-aware applications including SQL Server and Active Directory. The client triggers a VSS snapshot before reading files, so databases and AD data are captured in a consistent state.

The PowerShell wrapper script in this guide writes to the Windows Event Log on failure. You can configure Windows Task Scheduler notifications or use a monitoring tool to alert on Event ID 1001 from the 'PBS Backup' source.

Yes. Use the restore command with the --archive-path flag to pull specific files or directories. You can also browse backup contents from the PBS web UI under the datastore's backup group.

Wrap-Up

The Golang PBS client fills a real gap in mixed Proxmox/Windows environments. It gives you one backup system for everything: VMs, containers, and bare-metal Windows. VSS support and client-side encryption make it usable for real workloads.

That said, alpha means alpha. Test it. Monitor it. Keep a secondary backup for anything critical until the project matures. Check the GitHub repository regularly for updates and breaking changes.