Nov 10, 20266 min read

Cloud Migration Tools in 2026: Servers, Databases, Files and Applications

The main tools for moving workloads to AWS and Google Cloud, grouped by what they move, with what each one leaves for you to do, and where an infrastructure SDK fits when the application is re-platformed rather than copied.

Illustration for Cloud Migration Tools in 2026: Servers, Databases, Files and Applications

Cloud migration tools are usually sold as one category, and they do very different jobs. Some replicate whole servers block by block, some copy a database and then stream its changes until cutover, and some move files, and none of them change how the application is built or deployed, which is where most of the time in a migration actually goes once the data has landed.

This guide groups the main AWS and Google Cloud migration tools by what they move, notes what each leaves to you, and covers where an infrastructure SDK fits when the application is re-platformed instead of copied.

Cloud migration tools at a glance

ToolMovesCloudApproachCutover downtime
AWS Application Migration ServiceServersAWSBlock-level replication to EC2Minutes
Google Migrate to Virtual MachinesServersGoogle CloudReplication to Compute EngineMinutes
AWS Database Migration ServiceDatabasesAWSFull load plus change data captureNear zero
Google Database Migration ServiceDatabasesGoogle CloudFull load plus continuous replicationNear zero
AWS DataSyncFiles and objectsAWSScheduled or one-off transferNone for reads
Google Storage Transfer ServiceFiles and objectsGoogle CloudScheduled or one-off transferNone for reads
pg_dump / logical replicationPostgresAnyDump and restore, or replicateFreeze length, or near zero
EncoreApplication layerAWS, Google CloudRe-platform services, provision from codeOne deploy

Servers: AWS Application Migration Service and Google Migrate to Virtual Machines

AWS Application Migration Service

AWS Application Migration Service (MGN) installs an agent on each source server, replicates its disks continuously into a staging area in your AWS account, and launches test or cutover instances on EC2 from that copy. It handles physical, virtualized and other-cloud servers, and the replication itself is free for a period per server, with EC2 and storage billed as usual. Google's Migrate to Virtual Machines does the same for Compute Engine, replicating VMs from vSphere, AWS or Azure.

Both are rehosting tools, so the servers arrive as they were, with the same operating system, patching, deploy scripts and cron entries, so the team still runs VMs afterwards, now on a cloud bill.

Best fit: Large estates of servers that must leave a data center by a deadline, where re-platforming each app first is not realistic.

Databases: AWS DMS and Google Database Migration Service

AWS Database Migration Service

AWS DMS runs a replication instance (or DMS Serverless) that performs a full load of each table and then applies ongoing changes through change data capture until you cut over, which keeps downtime to the final switch. It supports homogeneous moves such as Postgres to RDS for PostgreSQL and heterogeneous ones such as Oracle to Postgres, with a schema conversion tool for the latter. Google's Database Migration Service covers MySQL, PostgreSQL and SQL Server into Cloud SQL or AlloyDB with continuous replication.

The tools move rows, not the surrounding setup: the target instance, its networking, users, parameter settings and the application's connection all have to exist first, and DMS needs network access to the source and target plus source-side settings such as logical replication enabled on Postgres.

Best fit: Databases too large to dump and restore in a maintenance window, and engine changes.

Files and objects: DataSync and Storage Transfer Service

AWS DataSync

AWS DataSync copies data from NFS, SMB, HDFS, other object stores or other clouds into S3, EFS or FSx, with an agent for on-premises sources, verification and scheduling for incremental runs. Google's Storage Transfer Service does the same into Cloud Storage, including from S3 and Azure Blob Storage. For very large datasets with limited bandwidth, offline devices such as AWS Snowball remain an option.

Best fit: Uploads, media libraries, backups and data lakes.

Postgres without a migration service

For a Postgres database of a few gigabytes, pg_dump --format=custom and pg_restore --jobs during a short write freeze are usually faster to set up than DMS, and native logical replication (a publication on the source, a subscription on RDS or Cloud SQL) gives near-zero downtime without a separate service when the source allows it. The Render to RDS and Heroku Postgres to RDS guides walk through the dump-and-restore path.

The application layer: infrastructure from code

Encore

Encore combines an open source infrastructure SDK with a platform that provisions and deploys into your own AWS or GCP account, and it fits alongside the data tools rather than replacing them. None of the tools above decide how the application runs in the cloud, and a re-platform, from a PaaS or from VMs to containers and managed services, means building the target environment: a VPC, a container platform, the database instance DMS will load into, queues, buckets, secrets, IAM and a deploy pipeline, usually as Terraform written next to the application changes.

With Encore, services declare what they use in TypeScript or Go, and the deploy creates the VPC, Fargate or EKS (Cloud Run or GKE on GCP), RDS or Cloud SQL, SNS and SQS or Pub/Sub, S3 or Cloud Storage and the secret store entries, with an IAM role for each service on AWS or a service account on GCP, as covered in the AWS infrastructure docs:

// documents/documents.go package documents import ( "context" "encore.dev/storage/objects" "encore.dev/storage/sqldb" ) // The target database DMS or pg_restore loads into. var db = sqldb.NewDatabase("documents", sqldb.DatabaseConfig{ Migrations: "./migrations", }) // The bucket DataSync or Storage Transfer Service fills. var files = objects.NewBucket("documents", objects.BucketConfig{Versioned: true}) type Doc struct { ID int64 `json:"id"` Title string `json:"title"` Key string `json:"key"` } //encore:api public method=GET path=/documents/:id func Get(ctx context.Context, id int64) (*Doc, error) { d := &Doc{ID: id} err := db.QueryRow(ctx, `SELECT title, object_key FROM documents WHERE id = $1`, id). Scan(&d.Title, &d.Key) if err != nil { return nil, err } return d, nil }

Resources that already exist do not have to be recreated: Encore can import an existing RDS instance, S3 bucket, SNS topic, Cloud SQL instance or GCS bucket, so a database moved by DMS can be attached to the new services. encore run starts Postgres and local object storage for the same code, so the ported services are tested on a laptop before the cutover rather than first in the cloud. When AI coding agents do part of the porting, they declare a bucket or topic in the service code and run it locally in the same change, and the IAM and networking for it come from the deploy.

Migrated services are traced end to end from the first deploy, which the tracing docs cover, and production SQL databases keep deletion protection at the cloud provider level, per the infrastructure management docs.

Best fit: Re-platforming backend services into your own AWS or GCP account, alongside DMS or pg_dump for the data and DataSync for the files.

How to choose

Match the tool to what is moving, and rehost servers with Application Migration Service or Migrate to Virtual Machines when the deadline is tight. Move databases with DMS, Google's Database Migration Service or native Postgres tools depending on size and downtime. Move files with DataSync or Storage Transfer Service. When the application itself is being rebuilt for the cloud, use Encore to create the services and the infrastructure they need in your own account, and point the data tools at what it provisions.

Frequently asked questions

What are the main cloud migration tools?

For servers, AWS Application Migration Service and Google Migrate to Virtual Machines replicate machines into the cloud. For databases, AWS Database Migration Service and Google Database Migration Service copy data with ongoing change capture. For files and objects, AWS DataSync and Google Storage Transfer Service move data in bulk. Application re-platforming uses tools that rebuild how the app is deployed, such as containers with Terraform.

What is the difference between rehosting and replatforming?

Rehosting, or lift and shift, copies servers as they are onto cloud VMs, which is fast but keeps the old operating model. Replatforming changes how the application runs, for example moving it to containers with a managed database and queues, which takes longer but removes servers you would otherwise keep patching.

How do I move an application to AWS with Encore?

Port the services to Encore's TypeScript or Go SDK, declaring databases, Pub/Sub topics, buckets and cron jobs in code, then connect your AWS account and deploy. Encore provisions the networking, compute and managed services in your account, and existing RDS databases, S3 buckets or SNS topics can be imported instead of recreated.

Do I need a migration tool to move a Postgres database to AWS?

Not always. For databases small enough to move during a short write freeze, pg_dump and pg_restore are enough. Use AWS DMS or native logical replication when the database is large or downtime has to stay close to zero, because they keep copying changes until you cut over.

Deploy to your cloud on AWS and Google Cloud
without managing infrastructure

Encore lets developers and agents define application infrastructure directly in code, then automatically provisions it from local development to production in your AWS or GCP account.

~/orders — claude
Claude Code
Claude Code v2.1.180Opus 5.5~/orders