How to Migrate Backup Data Between Repositories for Veeam Backup for Microsoft 365
Purpose
Solution
Two methods may be used to migrate Veeam Backup for Microsoft 365 backup data:
- Migration Using Integrated PowerShell Commands — This is the primary and recommended method.
- The software remains operational throughout the migration, and tasks not using the repository that is being migrated can continue.
- It can migrate a local jet-based repository from one local drive to another.
- It can migrate a local jet-based repository to non-immutable object storage.
- It does not copy white space, which causes the migration process to reduce the space used by the backup data.
- It can be marginally slower because backup data is not simply copied but processed and written into a new jet-based database.
- Procedure is Windows OS-version agnostic.
- Directly Copying Backup Data — This method is viable but has limitations.
- The software must be stopped, and all Veeam Backup for Microsoft 365 services must be stopped until the copy and paste completes.
- It can only be used to move local jet-based repository data from one Windows drive to another Windows drive.
- It cannot be used to migrate data from a local jet-based repository to object storage.
- Whitespace within jet-based backup data is copied, causing the migrated data to be the same size as the original.
- It can be faster to migrate data, as backup data is simply copied block-for-block from source to destination without creating a new jet-based database (which is how the PowerShell procedure works).
- Because a new jet-based database is not created, the source and destination Windows OS must match.
Note: Neither method can be used to migrate between Object Storage Repositories.
PowerShell-based Migration | Direct Data Copying | |
Tasks using other repositories can continue to operate during migration. | ||
Supports local to local. | ||
Supports local to object storage. | ||
Supports object storage to object store. | ||
Reduce the size of the database on the migration destination. | ||
Source and destination Windows OS version agnostic. | ||
Creates a new jet-based database. |
Migrate Backup Data Using PowerShell
The Move-VBOEntityData PowerShell cmdlet is used to move backup data from one repository to another repository.
Limitations and Considerations of the Move-VBOEntityData cmdlet:
- As data is moved, Veeam Backup for Microsoft 365 removes items from the source repository and replaces them with whitespace.
For this reason:- The object storage repository where you want to move backup data must not contain any data associated with the items you want to move.
- If the move process was interrupted, do not start the related backup jobs until you have resumed and completed the data move process.
- Move-VBOEntityData supports the following data migration scenarios:
- Migration from one JET-based backup repository to another JET-based backup repository.
- Migration from a JET-based backup repository to a non-immutable object storage repository.
- The following migration scenarios are not supported:
- Migration from a JET-based backup repository to an immutable object storage repository.
- Migration from an object storage repository to another object storage repository.
- Migration from an object storage repository to a JET-based backup repository.
- Migrated restore points will no longer be attached to the original job. However, the restore points are still available for restore and can be accessed by right-clicking on the corresponding organization name.
- The Move-VBOEntityData cmdlet will not reconfigure backup jobs to change the repository they use. The jobs must be reconfigured manually or by using additional PowerShell cmdlets (as is done in the script example found in this article).
- It is recommended to run migration operations outside of backup windows to avoid overhead on a proxy and affecting backup jobs performance.
- If Teams data migration results in a mix of restore points created by EWS and protected APIs stored in the same repository, then such repository can only be used to create new backups using protected APIs
Usage examples for the Move-VBOEntityData cmdlet
Examples are available in the PowerShell Reference guide here: Move-VBOEntityData - Examples
Monitoring the Move-VBOEntityData migration progress
Status of migration tasks is displayed in the Veeam Backup for Microsoft 365 Console in the History tab under the Job > Data Management node.
PowerShell Migration Script Example
The script below is designed to automate backup data migration between repositories.
Expand for information about the Migration Script example
The script performs the following operations:
- Select Organization. Defines the organization associated with the data to be migrated.
- Select Backup Proxy. Defines the backup proxy server that hosts existing backup data.
- Select Target Repository. Defines the target object storage repository.
- Limit Migrations Sessions. This step configures the maximum number of simultaneous migration sessions to half of all threads configured for the selected backup proxy server. For example, if there are 64 threads configured on the backup proxy server, it will limit the number of migration sessions to 32 concurrent migration sessions.
- Disable All Jobs for Selected Organization. Disables all backup jobs created for the specified organization.
- Create a List of Source Repositories. Creates a list of backup repositories used by the backup jobs from Step 5 that will be used as source repositories. (If a repository is not in use by at least one backup job, the data residing there will not be migrated.)
- Get and Migrate All Users. Creates a list of all Users, Sites, Teams, and Groups located in the repositories from Step 6 and then migrates their data.
- Reconfigure Jobs to Use New Repository. Reconfigures all the jobs from Step 5 to use the object storage repository that is defined as a target repository and enables all jobs disabled at Step 5.
Before using the script below, it is essential that you:
- Read the Solution section of this article to understand the limitations of the script's cmdlets.
- Read the Move-VBOEntityData cmdlet User Guide page to understand additional considerations.
To run the script, download the file below, place it on the Veeam Backup for Microsoft 365 server. Then, run the "kb3067.ps1"
file and follow the script prompts.
This script was written for use with Veeam Backup for Microsoft 365 5B or later.
For ease of use, comments are provided for each step in the script.
MD5: 1A46953ED06CA7291D6107878A55091B
SHA-1: 29E6E85BC353318485FFABF35B67AED33C358A5E
This script is provided as a courtesy and is not supported by Veeam Technical Support. Use at your own risk.
Veeam Technical Support will not assist in the usage or troubleshooting of this tool.
Directly Copying Backup Data
Limitations to Consider
- All Veeam Backup for Microsoft 365 services must be stopped during while the copy-paste completes.
- Can be used to move local jet-based repository data from one Windows drive to another Windows drive.
- Cannot be used to migrate data from a local jet-based repository to object storage.
- Whitespace within jet-based backup data is copied, causing the migrated data to be the same size as the original.
- Because a new jet-based database is not created, the source and destination Windows OS versions must match.
Procedure
- Stop all backup jobs that are using the remote proxy.
- For each backup job using the remote proxy that will be migrated, open backup job settings and specify to temporarily use a different repository (i.e. Default backup repository).
- Remove all local repositories that will be migrated from the Veeam Backup for Microsoft 365 console.
- (Optional) Remove the original remote proxy from the Veeam Backup for Microsoft 365 console.
- Stop all Veeam Backup for Microsoft 365 services.
- Veeam Backup for Microsoft 365 Service
- Veeam Backup Proxy for Microsoft 365 Service
- Move the repository data from the original proxy to the new proxy (copy/paste).
*(Skip this step for SMB Repositories) - Start the Veeam Backup for Microsoft 365 services.
- Add the new remote proxy in the Veeam Backup for Microsoft 365 console.
- Add the migrated repository to the new backup proxy.
- Edit backup job from Step 2 and reconfigure them to use the repository added from the new proxy location.
- Start the original proxy service if it was stopped.
To report a typo on this page, highlight the typo with your mouse and press CTRL + Enter.