Storage Transfer Service in Google Cloud: Moving Data Safely, Fast, and at Scale

Storage Transfer Service in Google Cloud: Moving Data Safely, Fast, and at Scale

A thorough, plain-English guide to the managed service that copies huge amounts of data into, out of, and between Google Cloud storage locations, covering how it works, how agents and pools fit in, how to schedule, secure, monitor, and tune transfers, and how to avoid the mistakes that make migrations painful.

Imagine you are moving an entire library, a million books, from an old building to a new one across the city. You could carry books by hand, a few at a time, hoping nobody drops a box, nobody forgets which shelf a book came from, and nobody leaves a door unlocked. Or you could hire a professional moving crew that brings its own trucks, counts every book, checks that each one arrived undamaged, retries anything that slips, works at night so the library stays open by day, and hands you a signed report at the end. Storage Transfer Service is that professional moving crew for data. You tell it where the data is, where it should go, and when to do the job. Google handles the heavy lifting, the retries, the checking, and the paperwork. This guide explains exactly how that crew works, so you can plan moves with confidence.

1What Storage Transfer Service Really Is

Before going deep, we need a clear picture of the problem the service solves and what it actually delivers.

The problem of moving data

Data is rarely born where it will live forever. Companies collect files in their own data centers, in other cloud providers, on file servers, on network storage boxes, and in web locations. Sooner or later they want that data in Google Cloud, perhaps to run analytics, train machine learning models, back it up, or retire an old building. Moving a few files is easy. Moving billions of files, or hundreds of terabytes, is a different universe of difficulty.

At large scale, many things go wrong at once. Network connections drop halfway through a file. A single slow transfer ties up the line for hours. Some files change while being copied. Permissions get lost. Nobody can say for sure whether everything arrived. Writing your own copying scripts means you also have to write the retry logic, the scheduling, the logging, the checks, and the monitoring, and then keep all of it running reliably for weeks.

What the service gives you

Storage Transfer Service is a managed service that automates the movement of data into Cloud Storage, which is Google’s object storage, and between Cloud Storage locations. It can also move data out of Cloud Storage to certain destinations, including file systems. You describe a transfer job once, and the service takes care of reading the source, writing the destination, retrying failures, checking integrity, recording what happened, and repeating the job on a schedule if you wish.

Simple Analogy

Think of a courier company versus carrying parcels yourself. A courier tracks every parcel, reattempts a failed delivery, insures what it carries, and sends you a delivery report. You still decide what to send and where, but the logistics are no longer your problem.

Managed
Google runs the transfer machinery
Scalable
Built for very large datasets
Verified
Integrity checks and detailed logs
i
Good to Know

This service is aimed at bulk and ongoing data movement of objects and files. It is not a database replication tool and it does not understand your application. Its job is to copy storage content faithfully and reliably from one place to another.

2Core Concepts and Vocabulary

Every service has its own words. These are the ones you will meet in almost every conversation about transfers.

Term 1

Transfer Job

The saved definition of a transfer: what to copy, from where, to where, with which options, and on what schedule.

Term 2

Transfer Operation

One actual run of a transfer job. A job that repeats daily produces a new operation each day.

Term 3

Source

The place the data is read from, such as another cloud’s bucket, a file system, or a list of web addresses.

Term 4

Sink

The destination where data is written. The word is simply a technical name for the target location.

Term 5

Agent

A small program you install on a machine that can reach a file system, so the service can read from or write to it.

Term 6

Agent Pool

A named group of agents that work together on transfers and can share settings such as a bandwidth limit.

Term 7

Service Agent

A Google-managed identity that the service uses to read and write on your behalf, to which you grant permissions.

Term 8

Manifest

A file listing exactly which objects or files to transfer, used when you want precise control over the set.

Jobs versus operations

The difference between a job and an operation causes more confusion than any other pair of terms. A job is the plan. An operation is one execution of that plan. If you schedule a job to run every night, the plan exists once but produces many operations over time, each with its own start time, end time, counts of files copied, and any errors. When you check progress or troubleshoot, you look at operations. When you change settings, you edit the job.

Simple Analogy

A job is like a recurring calendar entry for a weekly delivery route. Each time the route is actually driven is one operation. If the route changes, you edit the calendar entry. If a delivery went wrong on Tuesday, you look at Tuesday’s trip.

!
Common Confusion

The word agent has two meanings that beginners mix up. The service agent is a Google-managed identity that holds permissions. A transfer agent is software you install on your own machines. They are completely different things with different purposes.

3Architecture and Components

The service has two main shapes, one where Google does everything and one where you contribute a little software of your own. Understanding the split is the most important architectural idea.

Agentless transfers

For many sources, Google can reach the data directly over the network, so you do not need to install anything. Transfers from Amazon S3, from Microsoft Azure storage, from lists of public web addresses, and between Cloud Storage buckets are of this kind. The service itself, running inside Google’s infrastructure, reads from the source and writes to the destination. You create a job, grant access, and Google does the rest.

Agent-based transfers

Other sources are not reachable from outside. A file server in your own data center, a network-attached storage box, a Hadoop file system, or an S3-compatible storage product sitting behind your firewall cannot simply be contacted by Google. For these, you install the transfer agent software on one or more machines that can reach the file system. The agents connect outward to the service, receive instructions about what to copy, and move the data using your own network link. Agents are grouped in agent pools.

flowchart TD
    A["Transfer job definition"] --> B["Storage Transfer Service control plane"]
    B --> C{"Source type"}
    C -->|"Cloud sources such as S3, Azure, URL list, Cloud Storage"| D["Google-managed workers read directly"]
    C -->|"File systems and S3-compatible storage"| E["Agent pool on your machines"]
    D --> F["Cloud Storage destination"]
    E --> F
        
FIG 1 — Agentless and agent-based paths to the destination

Comparing the two shapes

AspectAgentless transfersAgent-based transfers
Software to installNoneAgent software on your machines
Typical sourcesOther clouds, URL lists, Cloud StorageFile systems, HDFS, S3-compatible storage
Network bandwidth controlNot offered as a settingSupported through limits on the agent pool
Event-driven transfersSupported from certain sourcesNot supported
Manifest-based selectionSupportedSupported
Logging and monitoringCloud Logging and Cloud MonitoringCloud Logging and Monitoring, plus file system transfer logs
!
Check Current Support

The list of supported sources and sinks, and which of them need agents, evolves over time. Always check the official supported sources and sinks page before you design a migration around a specific pairing.

The main moving parts

1

Control plane

Holds job definitions, schedules, and state, and decides when to start operations and how to divide the work.

2

Workers or agents

The components that actually read data from the source and write it to the destination, either inside Google or on your machines.

3

Identity and permissions

The service agent and any credentials or federated identities that authorize reading and writing.

4

Observability layer

Logs, metrics, and optional notifications that report what happened and let you react to problems.

4Sources and Sinks: Where Data Can Come From and Go

The value of the service depends on how many places it can read from and write to. Here are the major categories.

Source 1

Amazon S3

Copy objects from S3 buckets into Cloud Storage without installing anything, using credentials or a role you provide.

Source 2

Azure Blob Storage

Copy from Azure storage accounts, including newer data lake storage, with options to avoid passing long-lived secrets.

Source 3

Cloud Storage buckets

Copy between buckets, across projects, regions, or storage classes, or replicate new objects continuously.

Source 4

URL lists

Fetch files from a list of public web addresses. The web server must support partial downloads and report file size.

Source 5

POSIX file systems

Copy from on-premises or cloud-hosted file systems such as network file shares, using agents on machines that can see them.

Source 6

Hadoop file systems

Copy from Hadoop clusters, with cluster-specific settings configured on the agents that serve the transfer.

Source 7

S3-compatible storage

Copy from storage products that speak the S3 style of interface, reached through agents.

Destinations

The most common destination is a Cloud Storage bucket. The service can also move data from Cloud Storage back to a file system, which is useful for restoring data to on-premises locations or for sharing data with systems that cannot read object storage. Which exact pairings are allowed varies, so the supported sources and sinks table in the official documentation is the final authority.

Simple Analogy

Think of a travel booking site that works with many airlines, trains, and buses. You do not need to learn each carrier’s rules. You say where you start and where you want to go, and the site handles the connection. Sources and sinks are the carriers, and the service is the booking site that connects them.

Special notes by source

1

URL lists

The service respects the rules published by the web server about automated access, and requires the server to support partial range downloads and to return the size of each file. A server that cannot do this will not work.

2

Cloud Storage

Object names and last-modified times follow Cloud Storage’s own meaning. The modified time changes when content or metadata changes, which affects how change detection behaves.

3

File systems

Some filtering options that work for cloud sources do not apply when a file system is involved, so selection of files may use different features there.

4

Other clouds

Reading from another provider may incur that provider’s data egress charges, a cost that is outside Google’s bill and easy to forget.

i
Planning Tip

Before starting any migration, write down the source type, the destination, the total size, the number of files, and whether an agent is required. These five facts decide almost every later design choice.

5Internal Working: What Happens During a Transfer

What actually happens between pressing start and seeing every file in its new home?

The life of an operation

1

Listing the source

The service scans the source to learn which files or objects exist and their basic details, such as size and modification time.

2

Deciding what to copy

It compares the source with the destination and applies your filters and options to decide which items need to be transferred, skipping those that are already up to date.

3

Dividing the work

The list is split into many pieces that can be handled in parallel by many workers or agents, which is how throughput reaches high levels.

4

Copying and checking

Workers read each item and write it to the destination, comparing integrity values to confirm the copy matches the source.

5

Retrying failures

Items that fail temporarily are retried automatically. Items that fail permanently are recorded with a reason.

6

Applying cleanup options

If you chose to delete extra destination files or remove source files after success, those actions occur now.

7

Reporting

The operation ends with counts of what was copied, skipped, and failed, plus logs and optional notifications.

sequenceDiagram
    participant U as You
    participant S as Transfer Service
    participant W as Workers or agents
    participant SRC as Source
    participant D as Destination bucket
    U->>S: Create and start job
    S->>W: Assign slices of work
    W->>SRC: List and read items
    W->>D: Write items
    W->>W: Verify integrity
    W-->>S: Report progress and errors
    S-->>U: Logs, metrics, notification
        
FIG 2 — How one transfer operation unfolds

Incremental behavior

On a repeating job, the service does not copy everything again each time. It compares the source and destination and copies only what is new or changed. This is why a first run may take days while later runs finish in minutes. Understanding this behavior is essential for planning, because the first transfer is the expensive one and the following ones are mostly maintenance.

Simple Analogy

Picture a photo backup on your phone. The first backup uploads every picture and takes a long time. After that, only the new photos are uploaded each night, which takes seconds. A repeating transfer job behaves the same way.

Integrity and consistency

The service uses checksums, which are short fingerprints calculated from a file’s content, to confirm that what was written matches what was read. If the fingerprint differs, the copy is treated as failed and retried. This protects against silent corruption in transit. It does not protect against a source that changes during the copy in ways that confuse a reader, so for rapidly changing data you should plan quiet windows or accept that a later run will pick up the changes.

!
Files That Change While Copying

If a file is being written to as it is read, the copy may capture a partial state or fail integrity checks. Schedule transfers when sources are quiet, or rely on repeated runs to catch up with changes.

6Scheduling Modes: Batch, Recurring, and Event-Driven

A transfer can run once, repeat on a clock, or react to changes as they happen. Choosing the right mode shapes cost, freshness, and effort.

Batch transfers

Batch transfers run on a one-time or scheduled basis. A one-time job is ideal for a migration where you move a dataset and then finish. A recurring job repeats at intervals, such as daily or weekly, copying whatever changed since the last run. Batch is simple, predictable, and works for almost every source.

Event-driven transfers

Event-driven transfers continuously watch the source for changes and copy new or updated files soon after they appear, instead of waiting for the next scheduled run. For Cloud Storage sources, the service listens to a stream of change notifications delivered through Pub/Sub, Google’s messaging service. When an object is added or updated, a message arrives, and the transfer reacts. This mode is available for certain agentless sources and is not available for agent-based transfers.

flowchart LR
    A["Object added or updated at source"] --> B["Change notification"]
    B --> C["Pub/Sub subscription"]
    C --> D["Storage Transfer Service"]
    D --> E["Copy to destination bucket"]
    E --> F["Logs and metrics"]
        
FIG 3 — The flow of an event-driven transfer

Choosing between the modes

SituationBetter modeWhy
One-time migration of an archiveBatch, one timeRun once and finish
Nightly sync from a file serverBatch, recurringPredictable and cheap
Keep a second bucket nearly currentEvent-drivenChanges arrive within a short time
Source is a file systemBatch, recurringEvent-driven is not available with agents
Need exact control of the file listBatch with a manifestOnly listed files are moved
Simple Analogy

Batch is like a garbage truck that visits every Tuesday and takes whatever is out. Event-driven is like a courier who arrives the moment you put a parcel on the doorstep. Batch is cheaper and simpler. Event-driven is faster and fresher.

Replication of buckets

Event-driven transfers between Cloud Storage buckets can act as cross-bucket replication, copying new or updated objects from one bucket to another. An important detail is that such a job copies changes from the time it starts listening. It does not automatically copy objects that already existed before, so for existing data you pair it with a one-time batch transfer.

i
Practical Tip

For a clean migration with ongoing sync, first run a batch transfer to copy the existing data, then enable event-driven transfer or a recurring job to keep the destination current until the final cutover.

7Agents and Agent Pools in Depth

Whenever your data lives behind your own firewall, agents become the heart of the design, so they deserve careful attention.

What an agent does

A transfer agent is a lightweight program, typically run as a container, installed on a machine that can read the file system you want to move. It reaches outward to Google Cloud, asks the service for work, reads the assigned files, and uploads them. Because the agent initiates the connection, you usually do not need to open inbound ports in your firewall, which is a major convenience for security teams.

Agent pools

Agents are organized into agent pools, which are named groups that serve transfers together. You attach a pool to a transfer job, and the service spreads the work across all active agents in that pool. Adding more agents increases potential throughput, and removing agents reduces it. Pools can also carry shared settings, such as a limit on how much network bandwidth the group may use.

flowchart LR
    FS["On-premises file system"] --> A1["Agent 1"]
    FS --> A2["Agent 2"]
    FS --> A3["Agent 3"]
    subgraph POOL["Agent pool"]
        A1
        A2
        A3
    end
    A1 -->|"Outbound encrypted connection"| GC["Google Cloud"]
    A2 --> GC
    A3 --> GC
    GC --> B["Cloud Storage bucket"]
        
FIG 4 — Several agents in a pool moving data in parallel
Simple Analogy

Think of agents as loading dock workers at your warehouse and the agent pool as the crew. The more workers you put on the dock, the more boxes leave per hour, up to the limit of the road in front of the warehouse, which is your network link.

Sizing and placing agents

1

Place agents close to the data

Install them on machines with fast, direct access to the file system, preferably on the same local network, so reading is never the bottleneck.

2

Start with a few agents

Begin with a small number, observe throughput, and add more until the network link or the file system becomes the limit, not the agents.

3

Provide enough machine resources

Agents need adequate processing power, memory, and fast local disks or network so they can keep many transfers in flight.

4

Plan for agent failure

Run multiple agents so that if one machine fails, others continue and the job still completes.

5

Keep agents updated

Use current agent versions so you receive fixes and compatibility with the service.

!
Agent Access Rights

Agents need appropriate access to read, and for some use cases write, the file system. Granting broader access than needed is a security risk, so use dedicated accounts and the narrowest permissions that allow the transfer to work.

Bandwidth control

A migration can easily consume your whole internet or interconnect link, starving business applications. For agent-based transfers, you can set a bandwidth limit on the agent pool, measured in megabytes per second. This acts as a speed governor, letting you move data steadily without disrupting daily operations. You can raise the limit at night and lower it during business hours to balance speed against disruption.

8Transfer Options: Filters, Overwrites, and Deletions

Each transfer job has options that decide which data moves and what happens at the edges. Understanding them prevents costly surprises.

Selecting what to copy

Option 1

Prefix filters

Include or exclude objects whose names start with specified text, which is how you select a folder-like portion of a bucket.

Option 2

Time-based conditions

Transfer only objects modified within a certain time window, such as recent files only, for cloud sources that support these conditions.

Option 3

Manifest file

Provide an explicit list of items to copy, giving exact control and a clear audit trail of what was intended.

Option 4

Managed folders choice

For bucket-to-bucket transfers, decide whether to transfer managed folders along with the objects.

What happens to existing files

When the destination already has a file with the same name, you decide the rule. You can overwrite only when the files differ, always overwrite, or never overwrite. The default is usually the careful one, replacing a destination file only when something about it differs from the source. Choosing “always” wastes effort on identical files, and choosing “never” can leave stale content in place.

Deleting data

Two deletion options are powerful and dangerous. The first deletes files from the destination if they are not present at the source, which makes the destination an exact mirror. The second deletes files from the source after they are successfully transferred, which turns a copy into a move. Both are irreversible in practice, so they deserve extra care and testing.

!
Deletion Options

Enabling deletion of destination files that are missing at the source can wipe valuable data if the source was accidentally empty or misconfigured. Enabling deletion of source files removes the original after copying. Test with small data first and consider versioning on buckets as a safety net.

Metadata and attributes

Files carry more than content. They have names, timestamps, permissions, and other attributes. How much of this travels with the file depends on the source and destination types. Moving between object stores preserves some metadata, while moving between a file system and object storage maps attributes differently. If specific attributes matter to your applications, such as original modification times or ownership, verify how they are handled on a small sample before the big move.

Simple Analogy

Moving house, deleting at the destination is like telling the movers to throw away anything in the new house that was not in the old one. Deleting at the source is like telling them to demolish the old house after loading the truck. Both can be right, and both are very hard to undo.

i
Safety Tip

Enable object versioning on destination buckets and keep the source until verification is complete. Delete originals only after you have confirmed the destination is correct and complete.

9Security, Identity, and Access

A data transfer touches both ends of your storage, so access control deserves careful, deliberate design.

The service agent

Each project that uses the service has a Google-managed service agent, an identity that the service uses to act on your behalf. You grant this identity the permissions it needs, such as reading from a source bucket and writing to a destination bucket. Granting only the specific roles required on only the specific buckets involved follows the principle of least privilege, which means giving an identity no more access than its job requires.

In some setups, you can delegate access to a user-managed service account that you control, which lets you apply your own governance, naming, and auditing to the transfer identity.

Authenticating to other clouds

Reading from Amazon S3 or Azure requires proving who you are to those providers. Traditionally this meant handing over long-lived access keys, which are secrets that could leak. Modern options allow federated identity, where the service proves its identity through a trust relationship and receives short-lived credentials, so no permanent secret is stored. Where available, federation is the safer choice, and it also simplifies rotation and audit.

Control 1

Least-privilege roles

Grant the service identity access only to the specific buckets and actions the job needs.

Control 2

Federated credentials

Prefer trust relationships that issue short-lived tokens instead of storing permanent keys for other clouds.

Control 3

Encryption in transit

Data moves over encrypted connections between the source, the service, and Cloud Storage.

Control 4

Encryption at rest

Cloud Storage encrypts data at rest by default, and customer-managed keys can be used on destination buckets if required.

Control 5

Audit logging

Administrative actions on jobs and access to data are recorded in audit logs for review.

Control 6

Outbound-only agents

Agents connect outward, reducing the need to open inbound firewall ports into your network.

Simple Analogy

Think of a courier who needs to enter two buildings to pick up and drop off a package. A good security policy gives the courier a visitor badge that opens only the two required doors and expires after the job, instead of a master key that opens every room forever.

Protecting the data in motion and at rest

Data is protected in transit by encryption between each hop. At rest in Cloud Storage, it is encrypted by default, with options for stronger key control. For regulated data, also consider where the destination bucket is located, since the region you choose determines where the data physically resides, and consider whether the transfer path crosses borders.

!
Secrets in the Wrong Place

Never paste long-lived access keys into scripts, tickets, or shared documents. If you must use keys, keep them in a proper secret manager, rotate them after the migration, and remove the access as soon as the project ends.

Governance after the job

When a migration finishes, tidy up. Remove permissions that were granted only for the project, delete unused agents and pools, retire temporary credentials, and review the destination bucket’s access settings. Leftover access from a finished project is a common source of security findings months later.

10Networking and Performance

Throughput is where migrations succeed or stall. Knowing what limits speed lets you remove the right bottleneck.

What limits speed

The speed of any transfer is the speed of its slowest link. That slowest link could be the source system’s ability to read files, the network connection between source and Google, the agents’ own resources, or the destination’s ability to accept writes. For agentless transfers from another cloud, the limit is often that provider’s request rates and your egress allowance. For agent-based transfers, it is often your own network link.

Bottleneck 1

Source read speed

An old file server or busy storage array may not serve files fast enough, no matter how many agents you add.

Bottleneck 2

Network link

A shared internet connection or a modest interconnect caps total throughput for the whole migration.

Bottleneck 3

File count and size mix

Millions of tiny files are slower than the same data in large files, because each file adds overhead.

Bottleneck 4

Agent resources

Underpowered agent machines cannot keep enough transfers in flight to fill the network.

Choosing the network path

PathStrengthBest for
Public internetSimple, no extra setupSmaller datasets and trials
Cloud VPNEncrypted tunnel, quick to set upModerate volumes and early phases
Dedicated or partner interconnectHigh, steady bandwidth and predictable latencyLarge, long-running migrations
Physical shipping of storage devicesAvoids the network entirelyEnormous datasets over weak links
i
Do the Arithmetic

Before committing to a network path, divide the total data size by the realistic link speed to get the transfer time. A dataset that would take months over your link may justify a faster connection or a physical shipping option. Google Cloud offers a separate appliance-based service for offline transfers, which is outside this tutorial’s scope but worth knowing exists.

Many small files

File count affects speed as much as total size. Each file requires a request to read it and a request to write it, so a billion tiny files can be slower than a few thousand huge ones of equal total volume. If you control how the data is produced, consider bundling tiny files into larger archives before migrating. If you cannot, plan for longer run times and more parallel agents.

Simple Analogy

Moving one thousand heavy boxes is quicker than moving one million envelopes, even if both weigh the same, because every item needs picking up, labeling, and putting down. Per-item overhead is the hidden cost of small files.

Working around slow sources

If the source is the bottleneck, adding agents will not help and may make the source slower for the people using it. In that case, schedule transfers off peak hours, apply a bandwidth or concurrency limit to protect business use, and check with the storage owner about maintenance windows. Fast data movement should never come at the cost of breaking production.

“A migration is only as fast as its slowest link, so find that link before you buy more of everything else.”

11Monitoring, Logging, and Notifications

Long transfers run for hours or days. You need to know whether they are healthy without watching them constantly.

Seeing progress

The console shows each operation’s status, how much data and how many files have been processed, how many failed, and the current rate. For jobs that run for a long time, this view is the quickest way to confirm that things are moving. It also shows when the next scheduled run will start.

Logging

Transfer activity can be sent to Cloud Logging, giving you per-file records of what succeeded and what failed and why. You can choose to log successes, failures, or both. Logging every success on a job with billions of files creates enormous log volume and cost, so many teams log failures only and enable full logging for smaller or audit-sensitive jobs. For file system transfers, additional transfer logs can also be produced.

Metrics and alerts

Cloud Monitoring collects metrics about transfers, such as bytes copied, objects copied, and error counts. You can build dashboards from these and create alerts, so that a person is notified if throughput drops, errors spike, or an operation fails to complete.

Pub/Sub notifications

You can have the service publish messages to a Pub/Sub topic when operations change state, for example when one starts, succeeds, fails, or is aborted. Another system can subscribe and react, such as starting a downstream processing job as soon as a transfer completes, or opening a ticket on failure. This turns a transfer from an isolated task into a link in an automated chain.

flowchart TD
    OP["Transfer operation"] --> LOG["Cloud Logging records"]
    OP --> MET["Cloud Monitoring metrics"]
    OP --> NOTE["Pub/Sub notification"]
    MET --> ALR["Alert to on-call person"]
    NOTE --> NEXT["Downstream processing starts"]
    NOTE --> TKT["Ticket opened on failure"]
        
FIG 5 — Observability and automation around a transfer
Alert 1

Operation failure

Alert when an operation ends in failure or is aborted so someone can look at the cause.

Alert 2

Throughput drop

Alert when the transfer rate falls well below the expected level, which often signals a network or agent problem.

Alert 3

Rising error counts

Alert on a growing number of failed objects, which may point to permission or naming problems.

Alert 4

Agent offline

Alert if agents in a pool stop reporting, since lost capacity slows or stalls the job.

Simple Analogy

Logs are the detailed receipts for every parcel, metrics are the dashboard showing how many parcels move per hour, and notifications are the text messages that tell you a delivery run has finished or gone wrong. You want all three for a big move.

!
Log Costs

Logging every successful file on a very large transfer can generate huge log volume and a surprising bill. Decide in advance what you need to log, and keep audit-level logging for jobs where it is truly required.

12Reliability, Retries, and Failure Handling

At scale, something always goes wrong. The question is how gracefully the system and your process handle it.

What the service retries for you

Temporary problems such as dropped connections, brief throttling by a source, and momentary service hiccups are retried automatically. The service tracks which items are done, so a restarted or resumed operation does not begin from zero. This is one of the biggest reasons to use a managed service instead of a hand-written copy script, which typically loses its place when it crashes.

Failures that need your attention

1

Permission errors

The service identity cannot read the source or write the destination. Fix the roles and re-run, and only the failed items will be retried.

2

Missing or moved source files

Files deleted or renamed after listing cannot be read. Later runs will naturally reflect the new state.

3

Unsupported names or attributes

Some file names or attributes are not valid in object storage. These items fail with clear reasons that you can handle by renaming or excluding them.

4

Source throttling

Another cloud may limit request rates. Slow the job or spread it over more time.

5

Agent or network outages

If agents or links go down, work pauses and resumes when they return, provided the operation is still within its running window.

Pausing, resuming, and cancelling

Operations can be paused and resumed, which is useful when a business event, such as a month-end close, needs the network to be free for a while. They can also be cancelled if something is clearly wrong. Because progress is tracked, a paused operation resumes close to where it stopped.

flowchart TD
    A["Item copy attempted"] --> B{"Succeeded?"}
    B -->|"Yes"| C["Mark done"]
    B -->|"Temporary failure"| D["Automatic retry"]
    D --> A
    B -->|"Permanent failure"| E["Record error with reason"]
    E --> F["You fix the cause"]
    F --> G["Later run retries the item"]
        
FIG 6 — How individual item failures are handled

Verifying completeness

A finished operation with zero errors is strong evidence of success, but for critical migrations you should add an independent check. Compare object counts and total sizes between source and destination, spot-check sample files by comparing fingerprints, and have application owners open and use the migrated data before you retire the source. Trust the service, but verify the outcome the business cares about.

i
Verification Tip

Keep a short written acceptance checklist for each migration: counts match, sizes match, sample files verified, applications tested, and stakeholders signed off. Only then delete the original data.

Simple Analogy

After a house move, you do not hand back the keys to the old house the moment the truck leaves. You walk through the new house, check that the boxes are all there, and make sure the furniture works before you let the old place go.

13Cost, Limits, and Trade-offs

Understanding where the money goes and which limits apply keeps budgets honest and plans realistic.

What drives the cost

The cost of a migration is the sum of several parts. The service itself has its own pricing model, which for some transfer types is free for the service portion and for others charges per amount of data, so always confirm the current rules on the official pricing page. Beyond that, you pay for storing the data in Cloud Storage, for operations such as listing and writing objects, and for any network charges. When the source is another cloud, that provider’s data egress fees are often the largest single line item and appear on a different bill.

Cost 1

Service charges

Depend on the transfer type and current pricing. Check the official page before estimating.

Cost 2

Destination storage

The ongoing cost of keeping data in Cloud Storage, which depends on the storage class and location you choose.

Cost 3

Operation charges

Reads, writes, and listings each cost a small amount, which adds up for billions of tiny files.

Cost 4

Source egress

Fees charged by the source provider to move data out, often significant for large migrations from other clouds.

Cost 5

Network and agent hosts

Interconnect fees, plus the machines that run agents, for transfers that need them.

Cost 6

Logging volume

Detailed per-file logs on massive jobs can add up and should be chosen deliberately.

Advantages and trade-offs

Advantages

  • Fully managed, so no custom copy scripts to build and run
  • Built-in retries, integrity checks, and progress tracking
  • Handles very large datasets with parallel workers
  • Supports one-time, recurring, and event-driven modes
  • Rich logging, metrics, and notification options
  • Bandwidth controls protect production networks

Disadvantages / Trade-offs

  • Mainly focused on moving data into and within Cloud Storage
  • Agent-based transfers require machines and setup on your side
  • Event-driven mode is not available for every source
  • Source-side egress and operation costs can be significant
  • Not a substitute for application-aware or database replication

Other tools for moving data

ToolBest forTrade-off
Storage Transfer ServiceLarge, repeatable, managed transfersSome setup, supported pairings only
Command-line copy toolsSmall or one-off copies from a single machineYou handle retries, scale, and scheduling
Offline transfer applianceHuge datasets over weak or expensive linksShipping time and logistics
Database migration servicesMoving live databasesDifferent problem, different tool
Custom scriptsUnusual one-off needsYou own all reliability work
!
Check Current Limits and Prices

Quotas, supported features, and prices are updated by Google Cloud over time. Treat numbers in any article as a starting point and confirm them on the official quotas and pricing pages before finalizing a plan.

14Design Patterns and Anti-patterns

Good patterns turn a risky migration into a routine project. Anti-patterns turn it into a weekend of emergencies.

Patterns worth adopting

Seed then sync

Run a large one-time batch to copy existing data, then switch to recurring or event-driven transfers to keep the destination current until the final cutover. The last sync before cutover is small and quick.

Pilot with a representative slice

Start with a small but representative portion of the data, covering the largest files, the smallest files, and the oddest names. Measure speed, errors, and costs, then scale with confidence.

Dedicated agent pool per workload

Use separate agent pools for separate projects or business units so that limits, permissions, and capacity can be tuned independently and one team’s migration does not starve another.

Transfer then trigger

Use notifications on completion to automatically start downstream work such as validation, indexing, or analytics, so people are not needed to babysit handoffs.

Landing bucket with lifecycle rules

Land incoming data in a staging bucket, validate it, and then move it to its permanent location. Add lifecycle rules to age data into cheaper storage classes automatically.

Anti-patterns to avoid

ANTI-PATTERN-01 Avoid
Problem

The team starts a full-scale production transfer without any pilot run.

Why It’s Harmful

Permission gaps, odd file names, speed limits, and cost surprises are discovered days into a huge job, when fixing them is expensive and stressful.

Correct Approach

Run a representative pilot first, review errors and costs, and adjust settings before the main transfer.

ANTI-PATTERN-02 Avoid
Problem

Deletion options are enabled on the first run without understanding their effect.

Why It’s Harmful

A mistaken source path or an empty source can cause the service to delete valuable files from the destination, or originals from the source after transfer.

Correct Approach

Leave deletion off at first, enable versioning, verify results, and turn deletion on only deliberately and with backups in place.

ANTI-PATTERN-03 Avoid
Problem

Transfers run at full speed during business hours with no bandwidth limit.

Why It’s Harmful

The migration consumes the company’s network and makes email, video calls, and business applications slow, causing complaints and pressure to cancel.

Correct Approach

Apply bandwidth limits on agent pools, schedule heavy work off peak, and raise limits when the network is quiet.

ANTI-PATTERN-04 Avoid
Problem

Long-lived cloud access keys are pasted into shared documents or never rotated.

Why It’s Harmful

A leaked key gives anyone broad access to the source storage, long after the migration is finished.

Correct Approach

Prefer federated identity, use a secret manager if keys are unavoidable, and remove access when the project ends.

ANTI-PATTERN-05 Avoid
Problem

The source is decommissioned the moment the job reports completion.

Why It’s Harmful

Hidden issues such as skipped files, wrong permissions, or applications that cannot read the new data appear later, when the original is gone.

Correct Approach

Verify counts, sizes, samples, and application behavior, keep the source for an agreed safety period, and only then retire it.

ANTI-PATTERN-06 Avoid
Problem

A single underpowered machine is used as the only agent for a huge file system.

Why It’s Harmful

Throughput is poor, one failure halts everything, and the migration drags on for weeks.

Correct Approach

Run several well-resourced agents in a pool, close to the data, and scale until the network or source is the true limit.

15Best Practices and Common Mistakes

A checklist of habits that experienced teams build into every migration, and the traps that catch newcomers.

Best practices

1

Inventory the data first

Know the total size, the number of files, the largest and smallest files, and how fast the data changes before you plan anything.

2

Do the bandwidth arithmetic

Divide size by realistic link speed to estimate duration, and choose the network path accordingly.

3

Pilot before the main run

Test with a representative slice and learn from the errors and costs it reveals.

4

Grant least privilege

Give the service identity only the roles it needs on only the buckets involved, and prefer federation over stored keys.

5

Protect production with limits

Set bandwidth limits and schedule heavy transfers away from peak business hours.

6

Enable versioning and keep the source

Use versioning on destination buckets and retain the source until verification is complete.

7

Monitor and alert

Send logs and metrics to central tools, and alert on failures and throughput drops.

8

Verify with independent checks

Compare counts and sizes, spot-check content, and get application owners to confirm before retiring the source.

9

Clean up afterwards

Remove temporary permissions, delete unused agents and pools, and retire credentials when the project ends.

Common mistakes

!
Mistake: Forgetting source egress fees

Budgeting only for Google Cloud costs and being surprised by the other provider’s data transfer bill. Always estimate egress charges at the source.

!
Mistake: Ignoring many-small-files overhead

Estimating duration from total size alone. Millions of tiny files can take far longer than the same volume in large files.

!
Mistake: Assuming event-driven means instant

Expecting zero delay. Event-driven transfers react quickly, but there is still latency, and they only handle changes after they start, not existing data.

!
Mistake: Confusing the two kinds of agent

Mixing up the Google-managed service agent identity with the transfer agent software on your machines, and granting permissions to the wrong one.

!
Mistake: Ignoring file names and attributes

Assuming every name and attribute survives the move. Unusual characters, very long paths, and special attributes can behave differently in object storage and need testing.

!
Mistake: Skipping the cleanup

Leaving permissions, agents, and credentials in place after the migration. Forgotten access is a long-term risk and often shows up in security reviews.

A short pre-launch review

QuestionWhat a good answer looks like
How big is the data and how many files?Known, with a realistic duration estimate
Is an agent needed?Yes or no, decided from the source type
What identity does the job use?A least-privilege identity on only the needed buckets
Will it disrupt production?Bandwidth limits and off-peak schedules are set
What if it fails halfway?Resumable, with alerts and a clear recovery path
How will we prove it worked?A written acceptance checklist with independent checks

16Real-World and Industry Scenarios

These illustrative scenarios, drawn from common industry patterns, show how the ideas combine in practice.

A media company consolidating archives from another cloud

A broadcaster stores petabytes of video in another provider’s object storage and wants it in Google Cloud for editing and machine learning. It runs a pilot on a few thousand files, uses federated identity so no long-lived keys are shared, schedules the main transfer in waves, and moves older content into colder storage classes once copied. The team budgets carefully for the source provider’s egress charges, which turn out to be the largest single cost.

A manufacturer retiring an on-premises file server

A factory network holds years of design files on aging network storage. The company installs a pool of agents on machines in the same data center, sets a bandwidth limit so engineers are unaffected during the day, raises it at night, and runs recurring syncs until the cutover weekend. A final small sync captures last-minute changes, and the old server is kept for a month before shutdown.

A research institute moving a Hadoop dataset

A university lab has a Hadoop cluster that is being decommissioned. It uses agents configured for the cluster to copy datasets into Cloud Storage, where analytics tools can read them directly. Large files move fast, while a set of tiny log files is bundled into archives beforehand to reduce overhead.

A software company keeping a disaster recovery bucket current

A company wants customer uploads in one region replicated to a bucket in another region. It first runs a batch transfer to copy existing objects, then enables an event-driven transfer so new uploads appear in the second bucket shortly after they arrive. Notifications alert the on-call engineer if the replication falls behind.

A retailer ingesting partner data from public links

A retailer receives daily product images and catalogs hosted by suppliers on public web servers. It uses a URL list as the source with a manifest of addresses, lands files in a staging bucket, validates them, and moves approved files to the production bucket. A completion notification kicks off the processing pipeline automatically.

What these scenarios share

Each team estimated duration and cost before starting, ran a small pilot, used least-privilege access, protected production with limits, watched progress with metrics and alerts, and verified results before retiring anything. None treated the transfer as a single button press. They treated it as a small project with a plan, a rehearsal, and an acceptance test.

17Frequently Asked Questions

Short, direct answers to questions that come up again and again.

Q1Do I always need to install agents?

No. Transfers from other clouds, from lists of web addresses, and between Cloud Storage buckets do not need agents. Transfers involving file systems or S3-compatible storage do.

Q2What is the difference between a job and an operation?

A job is the saved plan. An operation is one execution of that plan. A recurring job produces a new operation each time it runs.

Q3Will a repeating job copy everything every time?

No. After the first run, the service compares source and destination and copies only new or changed items, so later runs are usually much faster.

Q4Can I keep two buckets in sync automatically?

Yes, with event-driven transfers between buckets, which react to new or updated objects. They do not copy objects that existed before the job began, so run a one-time batch transfer first for existing data.

Q5How do I stop a transfer from using all my bandwidth?

For agent-based transfers, set a bandwidth limit on the agent pool. Also schedule heavy transfers during quiet hours.

Q6Is my data encrypted during transfer?

Yes. Data moves over encrypted connections, and Cloud Storage encrypts data at rest by default, with optional customer-managed keys.

Q7How do I authenticate to Amazon S3 or Azure safely?

Prefer federated identity options where available so that short-lived credentials are used and no permanent secret is stored. If you must use keys, protect them in a secret manager and rotate them afterward.

Q8What happens if a transfer fails halfway?

Temporary failures are retried automatically, and progress is tracked, so a resumed or rerun operation does not start from scratch. Items that fail permanently are recorded with reasons so you can fix and retry them.

Q9Can I copy only certain files?

Yes. Use prefix filters, time-based conditions where supported, or a manifest file that lists exactly which items to transfer.

Q10Is it safe to delete the source after a transfer?

Only after you have verified the destination with independent checks. The service can delete source files after success, but this is irreversible, so test first and keep a safety period.

Q11What if I have a huge dataset and a slow connection?

Calculate the transfer time first. If it is unreasonably long, consider a faster network path such as a dedicated interconnect, or an offline transfer appliance that moves data by shipping physical devices.

Q12How do I know when a transfer finishes?

Watch the operation status in the console, set up alerts through Cloud Monitoring, or configure Pub/Sub notifications that announce completion or failure so other systems can react.

Q13Does this replace database migration tools?

No. It copies stored files and objects. Live databases need purpose-built migration or replication tools that understand transactions and consistency.

18Summary and Key Takeaways

Storage Transfer Service is Google Cloud’s managed answer to the hard, unglamorous job of moving data at scale. It copies from other clouds, from lists of web addresses, from file systems, and between Cloud Storage buckets, with agentless paths where Google can reach the data directly and agent-based paths where your own machines bring the data out of a protected network. Jobs describe the plan, operations are individual runs, and repeating jobs copy only what changed. Batch schedules fit most cases, while event-driven transfers keep buckets nearly current. Filters, manifests, overwrite rules, and deletion options give precise control, and bandwidth limits on agent pools protect production networks. Security rests on a least-privilege service identity, federated credentials where possible, and encrypted connections. Reliability comes from automatic retries and tracked progress, and observability from logs, metrics, and notifications. The teams that succeed estimate time and cost up front, pilot first, protect the business with limits, verify independently, and clean up afterward. Treat a migration as a small project with a rehearsal and an acceptance test, and the service will do the heavy lifting.

Key Takeaways

  • Know which shape you need — agentless for other clouds, URL lists, and bucket-to-bucket copies, and agent-based for file systems and S3-compatible storage behind your firewall.
  • Jobs are plans, operations are runs — repeating jobs copy only new or changed data, so the first run is the big one and later runs are light.
  • Pick the right mode — batch for migrations and scheduled syncs, event-driven for near-real-time bucket replication, with a one-time batch first for existing data.
  • Find the real bottleneck — source read speed, network link, file count, and agent resources decide throughput, so do the arithmetic and use bandwidth limits to protect production.
  • Secure both ends — grant least-privilege roles to the service identity, prefer federated credentials over stored keys, and clean up access when the project ends.
  • Handle deletion with care — deletion options are irreversible in practice, so enable versioning, test small, and keep the source until independent verification passes.
  • Plan, pilot, verify, and watch — estimate cost and time, run a representative pilot, monitor with logs, metrics, and notifications, and sign off with an acceptance checklist before retiring the source.