Stay organized with collections
Save and categorize content based on your preferences.
Database Migration Service replicates data from SQL Server backup and transaction
log files that you upload to a Cloud Storage bucket. This page describes
how to prepare your bucket for migration procedures, and what folder structure
is required for Database Migration Service to recognize your backup files.
To prepare a storage bucket for migration, perform the following steps:
Create your bucket.
Make sure you use the
same region as the one where you intend to create your destination
Cloud SQL for SQL Server instance.
Database Migration Service is a fully-regional product, meaning that all entities
related to your migration (source and destination connection profiles,
migration jobs, destination databases, storage buckets for backup files)
must be saved in a single region.
Database Migration Service expects a folder structure where every folder present at
the bucket's root level represents one database to migrate.
The database folder at minimum must contain two folders: full for the full backup
file, and log for transaction log
backup files that you later upload for the incremental load phase.
The database folder can also optionally contain a diff folder for the
differential backup file.
If you use striped full or differential backup files, their respective full
or diff folders must contain an additional folder whose name is a Unix timestamp
in seconds.
For example, if you use a single full backup file, put it directly in the
full folder. The same rule applies to the differential backup file:
In these examples, Database Migration Service creates two databases in your destination
Cloud SQL instance: my-business-database and my-other-database.
Each database is populated with data pulled from their individual full,
diff, and log folders.
You can mix the single file or striped file conventions for
full and differential backup files. Differential backup files are optional,
so you can also leave the diff folder empty:
Put the differential backup file in the diff folder.
Put the transaction log files in the log folder.
Make sure your full backup, differential, and transaction log files follow the naming
conventions required by Database Migration Service. See
Backup files naming requirements.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eDatabase Migration Service utilizes a Cloud Storage bucket to replicate data from SQL Server backup and transaction log files.\u003c/p\u003e\n"],["\u003cp\u003eThe storage bucket must reside in the same region as the Cloud SQL for SQL Server instance, and must contain a specific folder structure for each database being migrated.\u003c/p\u003e\n"],["\u003cp\u003eEach database folder should contain at least \u003ccode\u003efull\u003c/code\u003e and \u003ccode\u003elog\u003c/code\u003e folders for full and transaction log backups respectively, and optionally a \u003ccode\u003ediff\u003c/code\u003e folder for differential backups.\u003c/p\u003e\n"],["\u003cp\u003eStriped backup files require an additional folder within the \u003ccode\u003efull\u003c/code\u003e or \u003ccode\u003ediff\u003c/code\u003e folders, named as a Unix timestamp, to contain the individual stripe files.\u003c/p\u003e\n"],["\u003cp\u003eBackup files should be uploaded to their respective folders, and the database migration service will use the \u003ccode\u003efull\u003c/code\u003e, \u003ccode\u003ediff\u003c/code\u003e, and \u003ccode\u003elog\u003c/code\u003e folders to create and populate each database.\u003c/p\u003e\n"]]],[],null,["# Store backup files in a Cloud Storage bucket\n\nDatabase Migration Service replicates data from SQL Server backup and transaction\nlog files that you upload to a Cloud Storage bucket. This page describes\nhow to prepare your bucket for migration procedures, and what folder structure\nis required for Database Migration Service to recognize your backup files.\n\nTo prepare a storage bucket for migration, perform the following steps:\n\n1. [Create your bucket](/storage/docs/creating-buckets).\n Make sure you use the\n same region as the one where you intend to create your destination\n Cloud SQL for SQL Server instance.\n\n Database Migration Service is a fully-regional product, meaning that all entities\n related to your migration (source and destination connection profiles,\n migration jobs, destination databases, storage buckets for backup files)\n must be saved in a single region.\n2. [Create the folder structure](/storage/docs/objects#simulated-folders) to hold your backup files.\n\n - Database Migration Service expects a folder structure where every folder present at\n the bucket's root level represents one database to migrate.\n\n - The database folder at minimum must contain two folders: `full` for the full backup\n file, and `log` for transaction log\n backup files that you later upload for the incremental load phase.\n\n - The database folder can also optionally contain a `diff` folder for the\n differential backup file.\n\n - If you use striped full or differential backup files, their respective `full`\n or `diff` folders must contain an additional folder whose name is a Unix timestamp\n in seconds.\n\n For example, if you use a single full backup file, put it directly in the\n `full` folder. The same rule applies to the differential backup file: \n\n Cloud Storage bucket root/\n |- my-business-database/\n | |- full/\n | | |- full_backup_file\n | |- diff/\n | | |- diff_backup_file\n | |- log/\n | | |- transaction_log_file\n |- my-other-database/\n | |- full/\n | | |- full_backup_file\n | |- diff/\n | | |- diff_backup_file\n | |- log/\n | | |- transaction_log_file\n\n If you use striped full backup files, then use an additional folder in the `full`\n folder. The same rule applies to the differential backup file: \n\n Cloud Storage bucket root/\n |- my-business-database/\n | |- full/\n | | |- 1712649600/\n | | | |- my_full_backup_file_stripe1\n | | | |- my_full_backup_file_stripe2\n | |- diff/\n | | |- 1706967833/\n | | | |- firstDiffStripe.bak\n | | | |- other_diff_stripe.diff\n | |- log/\n | | |- transaction_log_file\n |- my-other-database/\n | |- full/\n | | |- 1715250742/\n | | | |- my_full_backup_file_stripe1\n | | | |- my_full_backup_file_stripe2\n | |- diff/\n | | |- 1706967833/\n | | | |- firstDiffStripe.bak\n | | | |- other_diff_stripe.diff\n | |- log/\n | | |- transaction_log_file\n\n In these examples, Database Migration Service creates two databases in your destination\n Cloud SQL instance: `my-business-database` and `my-other-database`.\n Each database is populated with data pulled from their individual `full`,\n `diff`, and `log` folders.\n\n You can mix the single file or striped file conventions for\n full and differential backup files. Differential backup files are optional,\n so you can also leave the `diff` folder empty: \n\n Cloud Storage bucket root/\n |- my-business-database/\n | |- full/\n | | |- full_backup_file\n | |- diff/\n | | |- 1706967833/\n | | | |- firstDiffStripe.bak\n | | | |- other_diff_stripe.diff\n | |- log/\n | | |- transaction_log_file\n |- my-other-database/\n | |- full/\n | | |- 1712649600/\n | | | |- my_full_backup_file_stripe1\n | | | |- my_full_backup_file_stripe2\n | |- diff/\n | | |- diff_backup_file\n | |- log/\n | | |- transaction_log_file\n |- third-database/\n | |- full/\n | | |- full_backup_file\n | |- log/\n | | |- transaction_log_file\n\n In this example, the `third-database` doesn't use a differential backup file\n for migration, so it doesn't have the `diff` folder.\n3. [Upload your backup files](/storage/docs/uploading-objects)\n to their respective folders:\n\n - Put the full backup file in the `full` folder.\n - Put the differential backup file in the `diff` folder.\n - Put the transaction log files in the `log` folder.\n\n | **Note:** You can upload the differential backup file at a later time - after you create the migration job, but before you start uploading transaction log files.\n\n Make sure your full backup, differential, and transaction log files follow the naming\n conventions required by Database Migration Service. See\n [Backup files naming requirements](/database-migration/docs/sqlserver/export-backup-files).\n\nWhat's next?\n------------\n\n- [Schedule regular transaction log transfers](/database-migration/docs/sqlserver/automate-backup-exports)."]]