# Migrate cloud provider with rclone

[Rclone](https://rclone.org/) is a command-line program to migrate between a
large number of cloud storage providers. Rclone can be used to migrate data
from a local environment or other cloud providers to Simple Object Storage.

## Installation

Rclone is available as a package in most Linux distributions and is also
available [for Windows and macOS](https://rclone.org/downloads/). Since Rclone
is a stand-alone executable, it can simply be downloaded and started.

On Windows, it is recommended to set the `PATH` environment variable to point
to the folder Rclone is located in.

## Prerequisites

Before you start this guide, you will need to:

- Create a SOS Bucket, either via the [Portal](https://portal.exoscale.com/) or
the [CLI]({{< ref "/tools/command-line-interface" >}}).
See the [Simple Object Storage documentation]({{< ref "/product/storage/object-storage/quick-start" >}})
for more information.

- Create an IAM key, also via the Portal or the CLI. See the [IAM documentation]({{< ref "/product/security/iam/quick-start" >}}) for more information.

## Configuration

Before you can use Rclone, you need to configure your accounts. Enter the following command:

```
rclone config
```

You will be shown the following options:

```
n) New remote
s) Set configuration password
q) Quit config
```

Select `n` to set up your Exoscale account and enter an account name (such as `Exoscale`). This account name will be used to start the sync.

```
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> Exoscale
```

You will see a list of supported cloud storage providers. Please select `Amazon S3`, since the Exoscale SOS implements the Amazon S3 standard.

You will then be asked for the access key and secret source. Please enter `1`:

```
Choose a number from below, or type in your own value
 1 / Enter AWS credentials in the next step
 \ "false"
 2 / Get AWS credentials from the environment (env vars or IAM)
 \ "true"
```

Enter your access key and secret:

```
AWS Access Key ID - leave blank for anonymous access or runtime credentials.
access_key_id> EXO...
AWS Secret Access Key (password) - leave blank for anonymous access or runtime credentials.
secret_access_key> ...
```

Select the region:

```
 / If using an S3 clone that only understands v2 signatures
12 | eg Ceph/Dreamhost
 | set this and make sure you set the endpoint.
 \ "other-v2-signature"
```

Select the `other-v2-signature` option. For the endpoint, enter
`sos-ZONE.exo.io`. Make sure to substitute `ZONE` with the relevant zone.

```
Endpoint for S3 API.
Leave blank if using AWS to use the default endpoint for the region.
Specify if using an S3 clone such as Ceph.
endpoint> sos-at-vie-1.exo.io
```

For the last four fields, enter the following:

- Location constraint: `Empty for US Region, Northern Virginia or Pacific Northwest.`
- Canned ACL: `Owner gets FULL_CONTROL. No one else has access rights (default).`
- Server-Side Encryption: `None`
- Storage class: `Default`

Then save the configuration with `Y`.

> [!NOTE]
    You now need to configure the second provider.

## Synchronization

The cloud providers are now configured, so you can synchronize the files. To synchronize from a local folder to the Exoscale SOS, enter the following command:

```bash
rclone sync /LOCAL/FOLDER Exoscale:BUCKET-NAME-HERE/
```

Instead of `Exoscale`, enter the name you have given your configuration. To synchronize from a second cloud provider, you can use the following command:

```bash
rclone sync OtherProvider:SOURCE-DIRECTORY Exoscale:BUCKET-NAME-HERe/
```
