A Windows VPS needs backups just like a Linux server: application data, databases, configuration, and ideally a way to rebuild the whole system. Windows includes Windows Server Backup (wbadmin) for system and volume backups. For off-site copies, add a file-level backup tool. Here’s a practical setup.
What to back up
| Data | Method |
|---|---|
| Application data, websites, documents | File-level backup |
| SQL Server databases | Native BACKUP DATABASE to files, then copy them off-site |
| MySQL/PostgreSQL on Windows | mysqldump / pg_dump, then copy |
| IIS configuration | appcmd add backup, plus the inetpub content |
| Trading platform profiles, EAs | Their data folders (e.g. MetaTrader’s data directory) |
| Whole system (bare-metal) | Windows Server Backup to another volume or share |
Install Windows Server Backup
Install-WindowsFeature Windows-Server-Backup -IncludeManagementTools
Then open wbadmin.msc (Windows Server Backup), or use the wbadmin command.
Back up to a network share (off the server)
A backup stored on the same disk doesn’t survive a disk failure, or a deleted server. Use a network share on another machine, for example a Windows or Samba share on a backup VPS reachable over a VPN:
wbadmin start backup -backupTarget:\\backup-host\winbackups\vps1 -include:C: -allCritical -systemState -vssFull -quiet -user:backupuser -password:*
-allCriticalincludes everything needed for bare-metal recovery.-systemStateincludes the registry, boot files and Active Directory (on domain controllers).- A network share keeps only the latest backup (each run overwrites it). For version history, combine it with a file-level tool, or rotate share folders.
Schedule a daily job with Task Scheduler (running the wbadmin command), or use the “Backup Schedule” wizard when backing up to a dedicated local disk.
Keep SMB traffic private: don’t expose file sharing ports to the internet. Use a VPN between the servers. See WireGuard.
File-level, versioned, off-site: restic on Windows
restic runs natively on Windows, encrypts and deduplicates, and supports SFTP servers and S3-compatible storage:
# one-time
$env:RESTIC_REPOSITORY = "sftp:[email protected]:/home/backup/repos/win1"
$env:RESTIC_PASSWORD_FILE = "C:\backup\restic-pass.txt"
restic init
# daily (from a scheduled task)
restic backup C:\inetpub C:\Data C:\Backups\sql --use-fs-snapshot
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
--use-fs-snapshot uses VSS (Volume Shadow Copy), so open files are backed up consistently. See VPS as a backup server.
Other options: Veeam Agent for Windows (free edition available), Duplicati (web UI), or your backup provider’s agent.
SQL Server databases
Back up databases with SQL Server’s native backups. Copying .mdf files while the service runs isn’t safe:
BACKUP DATABASE [AppDb] TO DISK = N'C:\Backups\sql\AppDb.bak' WITH COMPRESSION, INIT;
Schedule it with SQL Server Agent (not available in Express edition; use Task Scheduler with sqlcmd there), then include C:\Backups\sql in your off-site backup.
IIS configuration
& $env:windir\system32\inetsrv\appcmd.exe add backup "daily-$(Get-Date -Format yyyyMMdd)"
Backups are stored in C:\Windows\System32\inetsrv\backup. Include that folder, and your site content (C:\inetpub or wherever your sites live). See install IIS.
Test restores
- Files: restore a folder to a temporary location, and compare it.
- Databases: restore a
.bakas a new database name, and run a quick query. - Whole system: practise a bare-metal recovery on a test VPS. Rebuilding the OS by reinstalling (from your VPS control panel) and restoring data is often faster than image-based recovery on a VPS. See reinstall the OS.
Quick reference
| Task | Tool / command |
|---|---|
| Install | Install-WindowsFeature Windows-Server-Backup |
| System backup to a share | wbadmin start backup -backupTarget:\\host\share -allCritical |
| Versioned off-site files | restic (with --use-fs-snapshot) |
| SQL Server | BACKUP DATABASE … TO DISK |
| IIS config | appcmd add backup |
Related: backup strategy (3-2-1) and PowerShell basics.