> For the complete documentation index, see [llms.txt](https://academy.shade.inc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.shade.inc/guides/guides-es/configuracion-y-migracion/migracion-masiva-de-datos-a-shade-mediante-rclone.md).

# Migración masiva de datos a Shade mediante Rclone

Cómo migrar datos a Shade mediante Rclone

### Manejo eficiente de la migración y las transferencias de datos

Esta es una guía para migrar grandes cantidades de datos hacia o desde tu unidad de Shade usando rclone, una potente herramienta de código abierto que admite muchas fuentes diferentes.

### Descargando rclone

El backend de Shade ahora está disponible de forma nativa como parte de Rclone. Puedes descargar rclone desde la [página oficial de descargas de rclone](https://rclone.org/downloads/).

### Acerca de rclone

[rclone](https://rclone.org/) es un potente programa de línea de comandos para administrar archivos en almacenamiento en la nube. A menudo se describe como "rsync para almacenamiento en la nube" y admite más de 70 proveedores diferentes de almacenamiento en la nube.

Los casos de uso comunes de rclone incluyen:

* **Sincronización y copias de seguridad** de archivos entre tu sistema local y el almacenamiento en la nube
* **Migración de datos** de un proveedor de nube a otro
* **Automatización de flujos de trabajo** con sincronizaciones y copias de seguridad programadas
* **Gestión de transferencias de archivos grandes** con capacidad de reanudación y controles de ancho de banda
* **Operaciones por lotes** para copiar, mover o eliminar archivos entre servicios en la nube

Con el backend rclone de Shade, puedes aprovechar todas las potentes funciones de rclone para interactuar con tus unidades de Shade directamente desde la línea de comandos.

### Configuración

Aquí tienes un ejemplo de cómo crear una configuración de Shade.

Primero, [crea una cuenta gratuita](https://app.shade.inc/) y elige un plan.

Deberás iniciar sesión y obtener la `clave API` y `ID de la unidad` para tu cuenta desde la sección de configuración de tu cuenta y de la unidad creada, respectivamente.

Ahora abre una ventana de comandos o una terminal y navega hasta donde descargaste ese archivo, y ejecuta

`./rclone config`\
\
(Si estás en un Mac, tendrás que indicarle a tu ordenador que este archivo puede ejecutarse, así que ejecuta

`chmod +x rclone` )

Luego sigue este proceso interactivo:

```
e) Editar remoto existente
n) Nuevo remoto
d) Eliminar remoto
r) Renombrar remoto
c) Copiar remoto
s) Establecer contraseña de configuración
q) Salir de la configuración
e/n/d/r/c/s/q> n

Introduce un nombre para el nuevo remoto.
name> Shade

Opción Storage.
Tipo de almacenamiento a configurar.
Elige un número de la lista de abajo, o escribe tu propio valor.
(Desplázate por la lista y encuentra la opción Shade; al 11/5/25 es 52)
[OTRAS OPCIONES]
xx / Shade FS
   \ (shade)
[OTRAS OPCIONES]
Storage> xx

Opción drive_id.
El ID de tu unidad; consúltalo en la configuración de la unidad. Las configuraciones individuales de rclone deben hacerse por unidad.
Introduce un valor.
drive_id> [YOUR_ID]

Opción api_key.
Una clave API para tu cuenta.
Introduce un valor.
api_key> [YOUR_API_KEY]

¿Editar configuración avanzada?
y) Sí
n) No (predeterminado)
y/n> n

Configuración completa.
Opciones:
- type: shade
- drive_id: [YOUR_ID]
- api_key: [YOUR_API_KEY]
¿Conservar este remoto "Shade"?
y) Sí, esto está bien (predeterminado)
e) Editar este remoto
d) Eliminar este remoto
y/e/d> y

```

### Ejemplo de flujo de trabajo: copiar archivos a Shade

Una vez que hayas configurado tu remoto de Shade, puedes copiar fácilmente archivos desde tu sistema de archivos local a Shade. Aquí tienes un flujo de trabajo común:

#### Copiar una carpeta local a Shade

Para copiar una carpeta desde tu sistema local a tu unidad de Shade:

```bash
./rclone copy /ruta/a/carpeta/local Shade:/carpeta/destino
```

Por ejemplo, para copiar tu carpeta "Projects" a Shade:

```bash
./rclone copy ~/Projects Shade:/Projects
```

Este comando hará lo siguiente:

* Copiar todos los archivos de tu carpeta local Projects a Shade
* Conservar la estructura de carpetas
* Omitir los archivos que ya existen y no han cambiado
* Mostrar el progreso durante la transferencia

#### Comandos útiles adicionales

**Sincronizar una carpeta** (hace que el destino sea idéntico al origen, incluidas las eliminaciones):

```bash
./rclone sync ~/Projects Shade:/Projects
```

**Comprobar qué se copiaría** sin copiar realmente:

```bash
./rclone copy ~/Projects Shade:/Projects --dry-run
```

**Copiar con progreso y estadísticas**:

```bash
./rclone copy ~/Projects Shade:/Projects --progress --stats 1s
```

**Listar archivos en tu unidad de Shade**:

```bash
./rclone ls Shade:/
```

### Alternativa: usar el backend S3 de rclone

También puedes conectar rclone a Shade a través del endpoint compatible con S3 de Shade, `https://s3.shade.inc`, usando el backend S3 integrado de rclone. Esto puede resultar útil si ya tienes scripts o flujos de trabajo basados en S3.

1. En Shade, ve a **Configuración > Integrar > Claves API S3**, selecciona **Generar clave API S3**, y copia el ID de la clave de acceso y la clave de acceso secreta. Las claves S3 pueden acceder a todas las unidades a las que tengas acceso de edición.
2. Añade un remoto a tu archivo de configuración de rclone (ejecuta `./rclone config file` para encontrarlo):

```
[ShadeS3]
type = s3
provider = Other
access_key_id = YOUR_ACCESS_KEY_ID
secret_access_key = YOUR_SECRET_ACCESS_KEY
endpoint = https://s3.shade.inc
region = us-east-1
force_path_style = true
no_check_bucket = true
```

3. Usa el ID de tu unidad como nombre del bucket:

```bash
./rclone copy ~/Projects ShadeS3:YOUR_DRIVE_ID/Projects --progress
```

Cada bucket es una unidad de Shade existente, así que no intentes crear ni eliminar buckets. La API S3 de Shade admite un subconjunto de acciones S3; consulta [Uso de la API S3 de Shade](https://academy.shade.inc/developers/using-shades-s3-api) para ver las acciones compatibles, la gestión de claves y la solución de problemas.

### Opciones estándar

Aquí están las opciones estándar específicas de shade (Shade FS).

**Nota:** Para la mayoría de los usuarios, solo necesitas configurar `drive_id` y `api_key`. Las opciones avanzadas de abajo son para casos de uso específicos y pueden dejarse en sus valores predeterminados.

#### --shade-drive-id

El ID de tu unidad; consúltalo en la configuración de la unidad. Las configuraciones individuales de rclone deben hacerse por unidad.

Propiedades:

* Config: drive\_id
* Variable de entorno: RCLONE\_SHADE\_DRIVE\_ID
* Tipo: string
* Requerido: true

#### --shade-api-key

Una clave API para tu cuenta. Puedes encontrarla en Configuración > Claves API

Propiedades:

* Config: api\_key
* Variable de entorno: RCLONE\_SHADE\_API\_KEY
* Tipo: string
* Requerido: true

### Opciones avanzadas

Aquí están las opciones avanzadas específicas de shade (Shade FS).

#### --shade-endpoint

Endpoint del servicio.

Déjalo en blanco normalmente.

Propiedades:

* Config: endpoint
* Variable de entorno: RCLONE\_SHADE\_ENDPOINT
* Tipo: string
* Requerido: false

#### --shade-chunk-size

Tamaño de fragmento que se usará para las cargas.

Cualquier archivo más grande que esto se cargará en fragmentos de este tamaño.

Ten en cuenta que esto se almacena en memoria por transferencia, así que aumentarlo incrementará el uso de memoria.

El mínimo es 5 MB, el máximo es 5 GB.

Propiedades:

* Config: chunk\_size
* Variable de entorno: RCLONE\_SHADE\_CHUNK\_SIZE
* Tipo: SizeSuffix
* Predeterminado: 64Mi

#### --shade-encoding

La codificación para el backend.

Consulta la [sección de codificación en la vista general](https://github.com/shade-labs/docs/blob/main/overview/README.md#encoding) para más información.

Propiedades:

* Config: encoding
* Variable de entorno: RCLONE\_SHADE\_ENCODING
* Tipo: Encoding
* Predeterminado: Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot

#### --shade-description

Descripción del remoto.

Propiedades:

* Config: description
* Variable de entorno: RCLONE\_SHADE\_DESCRIPTION
* Tipo: string
* Requerido: false

### Rutas de la API usadas por la integración de rclone

Las siguientes rutas son utilizadas por la integración de rclone para interactuar directamente con el sistema de archivos de Shade. Si quieres usar estas rutas directamente en tus propias aplicaciones, primero tendrás que obtener un token de usuario llamando a la ruta adecuada de la sección "Users" en la sección "Using the API" de nuestra documentación. Una vez que tengas el token de usuario, pásalo como un token Bearer en tus solicitudes en lugar de tu clave API.

**Nota:** El backend de rclone gestiona la autenticación automáticamente usando tu clave API; solo necesitas preocuparte por los tokens de usuario si estás creando integraciones personalizadas fuera de rclone.

## GET /{drive-id}/fs/listdir

> List directory contents for a given drive path

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/fs/listdir":{"get":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"getByDriveFsListdir","summary":"List directory contents for a given drive path"}}}}
```

## GET /{drive-id}/fs/attr

> Get file or directory attributes/metadata

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/fs/attr":{"get":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"getByDriveFsAttr","summary":"Get file or directory attributes/metadata"}}}}
```

## GET /{drive-id}/fs/download

> Download a file with optional content disposition

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/fs/download":{"get":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}},{"name":"disposition_type","in":"query","required":true,"schema":{"default":"attachment","type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"getByDriveFsDownload","summary":"Download a file with optional content disposition"}}}}
```

## POST /{drive-id}/fs/mkdir

> Create a directory at the specified path

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/fs/mkdir":{"post":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"postByDriveFsMkdir","summary":"Create a directory at the specified path"}}}}
```

## POST /{drive-id}/fs/mkdir/batch

> Create multiple directories in a single request

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/fs/mkdir/batch":{"post":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{},"required":true},"operationId":"postByDriveFsMkdirBatch","summary":"Create multiple directories in a single request"}}}}
```

## POST /{drive-id}/fs/copy-file

> Copy a file from one path to another

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/fs/copy-file":{"post":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string"}},{"name":"to","in":"query","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"postByDriveFsCopy-file","summary":"Copy a file from one path to another"}}}}
```

## POST /{drive-id}/fs/move

> Move or rename a file or directory

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/fs/move":{"post":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string"}},{"name":"to","in":"query","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"postByDriveFsMove","summary":"Move or rename a file or directory"}}}}
```

## POST /{drive-id}/fs/delete

> Delete a file or directory at the specified path

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/fs/delete":{"post":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"postByDriveFsDelete","summary":"Delete a file or directory at the specified path"}}}}
```

## GET /{drive-id}/info/storage

> Fetch overall storage usage and limits

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/info/storage":{"get":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"getByDriveInfoStorage","summary":"Fetch overall storage usage and limits"}}}}
```

## GET /{drive-id}/info/upload

> Fetch upload configuration and constraints

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/info/upload":{"get":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"operationId":"getByDriveInfoUpload","summary":"Fetch upload configuration and constraints"}}}}
```

## POST /{drive-id}/upload/multipart/part/{partNumber}

> Upload a specific part of a multipart upload

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/upload/multipart/part/{partNumber}":{"post":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"partNumber","in":"path","required":true,"schema":{"type":"number"}},{"name":"token","in":"query","required":true,"schema":{"type":"string"}},{"name":"signAllEndpoints","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"postByDriveUploadMultipartPartByPartNumber","summary":"Upload a specific part of a multipart upload"}}}}
```

## POST /{drive-id}/upload/multipart

> Initiate a multipart upload session

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/upload/multipart":{"post":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{},"required":true},"operationId":"postByDriveUploadMultipart","summary":"Initiate a multipart upload session"}}}}
```

## POST /{drive-id}/upload/multipart/complete

> Complete a multipart upload by finalizing parts

```json
{"openapi":"3.1.1","info":{"title":"Shade Rclone Routes","version":"0.0.0"},"paths":{"/{drive-id}/upload/multipart/complete":{"post":{"tags":["drives"],"parameters":[{"name":"drive","in":"path","required":true,"schema":{"type":"string"}},{"name":"token","in":"query","required":true,"schema":{"type":"string"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{},"required":true},"operationId":"postByDriveUploadMultipartComplete","summary":"Complete a multipart upload by finalizing parts"}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://academy.shade.inc/guides/guides-es/configuracion-y-migracion/migracion-masiva-de-datos-a-shade-mediante-rclone.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
