Outlook备份(OST-PST文件):Exchange Server用户如何实现每小时邮件增量备份?
Hey there, let's work through this Exchange Server incremental backup challenge you're dealing with. You’re totally right that scripting individual email storage isn’t a practical long-term solution—let’s look at some robust, efficient approaches instead:
Exchange Server integrates seamlessly with the Volume Shadow Copy Service (VSS), which most backup tools (including the built-in Windows Server Backup) use to create incremental backups. This is the most reliable built-in method because it operates at the mailbox database level, only capturing changes since the last backup.
Here’s how to set it up with Windows Server Backup:
- Open Windows Server Backup and create a new backup schedule
- Select the Exchange mailbox database volumes you want to back up
- Choose Incremental Backup as the type, then configure the schedule to run every hour
- Point the backup target to your local server’s storage (make sure you have enough space for ongoing increments)
Pro tip: You can set up a retention policy to automatically delete old incremental backups once they’re no longer needed, keeping your storage tidy.
If you prefer a scripted approach but want to avoid handling single emails, use the Exchange Management Shell’s native export cmdlets to batch-export only new emails since your last backup. The key is tracking a timestamp to avoid re-exporting existing data.
Here’s a sample script structure you can adapt:
# Path to store the last backup timestamp $timestampPath = "C:\ExchangeBackup\last_backup_timestamp.txt" # Get last backup time (default to 24 hours ago if first run) $lastBackupTime = Get-Content $timestampPath -ErrorAction SilentlyContinue if (-not $lastBackupTime) { $lastBackupTime = (Get-Date).AddHours(-24).ToString("yyyy-MM-dd HH:mm:ss") } $currentTime = Get-Date # Get all user mailboxes $mailboxes = Get-Mailbox -ResultSize Unlimited # Loop through each mailbox and export incremental emails foreach ($mailbox in $mailboxes) { $exportPath = "\\LocalServerBackup\ExchangeIncrements\$($mailbox.Alias)_inc_$($currentTime.ToString('yyyyMMddHHmm')).pst" # Export only emails received/sent since last backup New-MailboxExportRequest -Mailbox $mailbox ` -ContentFilter "(Received -ge '$lastBackupTime') -or (Sent -ge '$lastBackupTime')" ` -FilePath $exportPath ` -BadItemLimit 15 ` -Name "IncrementalBackup_$($mailbox.Alias)_$($currentTime.ToString('yyyyMMddHHmm'))" } # Wait for all exports to complete (optional, adjust based on your needs) Get-MailboxExportRequest | Where-Object { $_.Status -eq 'InProgress' } | Wait-MailboxExportRequest # Clean up completed export requests to avoid clutter Get-MailboxExportRequest | Where-Object { $_.Status -eq 'Completed' } | Remove-MailboxExportRequest -Confirm:$false # Update the timestamp file with current time $currentTime.ToString("yyyy-MM-dd HH:mm:ss") | Set-Content $timestampPath
This script batches exports by mailbox, uses Exchange’s filtering to only grab new emails, and keeps track of your backup progress. Just make sure the running account has the Mailbox Import Export role in Exchange and write access to the backup location.
If your team has budget, tools like Veeam Backup & Replication or Symantec Backup Exec are purpose-built for Exchange incremental backups. They offer:
- Automated hourly (or even continuous) incremental backups
- One-click recovery of individual emails, folders, or entire mailboxes
- Built-in monitoring and alerting for backup failures
- Support for both on-prem Exchange and hybrid environments with Exchange Online
These tools take the guesswork out of backup management and are ideal for larger organizations where reliability and ease of recovery are critical.
Key Notes to Keep in Mind
- Always test your recovery process regularly—having backups is useless if you can’t restore them!
- Ensure your local server storage has enough capacity for ongoing incremental backups (consider compressing PST files or using deduplication if needed)
- For hybrid Exchange setups, adjust the script to include Exchange Online mailboxes using the Exchange Online PowerShell module
内容的提问来源于stack exchange,提问作者andrepogg




