Skip to main content

Overview

Remote storage allows you to store your data, models, and pipeline outputs outside your Git repository. This enables team collaboration, backup, and access from different machines or environments.
DVC supports many storage types: Amazon S3, Google Cloud Storage, Azure Blob Storage, SSH, HTTP, and more.

Setting Up Remote Storage

1

Add a remote

Configure a remote storage location:
The -d flag sets this as the default remote.
You can add multiple remotes and switch between them as needed.
2

Configure credentials

Set up authentication for your storage:
3

Commit configuration

Save remote configuration to Git:
Never commit credentials to Git. Use environment variables or separate credential files.

Supported Storage Types

Configuration options:

Pushing and Pulling Data

Push to Remote

Upload tracked data to remote storage:

Pull from Remote

Download tracked data from remote storage:

Fetch (Download to Cache Only)

Download data to cache without checking out to workspace:
Then checkout when needed:
Use fetch + checkout when you want to download data but not immediately use it in your workspace.

Managing Remotes

List Remotes

Example output:

Set Default Remote

Modify Remote Settings

Remove Remote

Rename Remote

Remote Configuration Levels

DVC supports three configuration levels:
Stored in .dvc/config (committed to Git, shared with team).
Store credentials in .dvc/config.local (local level) to avoid committing them to Git.

Advanced Remote Options

Parallel Jobs

Control how many files are transferred simultaneously:
Or per-command:

Bandwidth Limit

Connection Timeout

SSL Verification

Custom Endpoint

Server-Side Encryption

Checking Storage Status

Compare local cache with remote:
Example output:
Use dvc status -c to see what needs to be pushed or pulled.

Best Practices

Separate credentials

Store credentials in .dvc/config.local (not committed) or use environment variables

Use cloud IAM

Prefer IAM roles and instance profiles over access keys when possible

Enable versioning

Turn on bucket versioning in S3/GCS to protect against accidental deletions

Set lifecycle policies

Configure cloud storage lifecycle rules to archive or delete old data

Use multiple remotes

Configure backup remotes for disaster recovery

Optimize transfers

Adjust -j (jobs) based on network bandwidth and file count

Complete Examples

AWS S3 Setup

1

Create S3 bucket

2

Configure DVC remote

3

Set credentials (local)

4

Push data

Google Cloud Storage Setup

1

Create GCS bucket

2

Configure DVC remote

3

Set credentials (local)

4

Push data

Multi-Remote Setup

Configure primary and backup remotes:

Troubleshooting

Check credentials configuration:
Verify cloud provider credentials:
Increase parallel jobs:
Or configure permanently:
Increase timeout:
Check bucket permissions and IAM policies. Ensure your credentials have:
  • S3: s3:GetObject, s3:PutObject, s3:ListBucket
  • GCS: storage.objects.get, storage.objects.create, storage.buckets.list

Next Steps

Collaboration

Share data and pipelines with your team using remote storage

Remote Config

Explore advanced remote configuration options