# Migración masiva de datos a Shade mediante Rclone

### Manejo eficiente de la migración y transferencia de datos

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

### Descargando rclone

El backend 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 gestionar archivos en almacenamiento en la nube. A menudo se describe como "rsync para almacenamiento en la nube" y admite más de 70 proveedores de almacenamiento en la nube diferentes.

Casos de uso comunes para 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 reanudar 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 Shade directamente desde la línea de comandos.

### Configuración

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

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

Necesitarás iniciar sesión y obtener la `Clave API` y `ID de unidad` para tu cuenta desde la sección de ajustes de tu cuenta y de la unidad creada respectivamente.

Ahora abre un símbolo del sistema o terminal y navega a donde descargaste ese archivo, y ejecuta

`./rclone config` \
\
(Si estás en un Mac necesitarás decirle a tu ordenador que este archivo puede ejecutarse, así que ejecuta&#x20;

`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 el nombre para el nuevo remoto.
nombre> Shade

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

Opción drive_id.
El ID de tu unidad, véase esto en los ajustes de la unidad. Las configuraciones individuales de rclone deben hacerse por unidad.
Introduce un valor.
drive_id> [TU_ID]

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

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

Configuración completada.
Opciones:
- type: shade
- drive_id: [TU_ID]
- api_key: [TU_API_KEY]
¿Mantener este remoto "Shade"?
y) Sí, esto está bien (por defecto)
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 Shade, puedes copiar fácilmente archivos desde tu sistema de archivos local a Shade. Aquí hay un flujo de trabajo común:

#### Copiar una carpeta local a Shade

Para copiar una carpeta desde tu sistema local a tu unidad 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á:

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

#### Comandos adicionales útiles

**Sincronizar una carpeta** (hace que el destino sea idéntico a la fuente, 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 Shade**:

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

### Opciones estándar

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

**Nota:** Para la mayoría de los usuarios, solo necesitas configurar el `drive_id` y `api_key`. Las opciones avanzadas siguientes son para casos de uso específicos y se pueden dejar con sus valores por defecto.

#### --shade-drive-id

El ID de tu unidad, véase esto en los ajustes de la unidad. Las configuraciones individuales de rclone deben hacerse por unidad.

Propiedades:

* Config: drive\_id
* Var. de entorno: RCLONE\_SHADE\_DRIVE\_ID
* Tipo: cadena
* Requerido: sí

#### --shade-api-key

Una clave API para tu cuenta. Puedes encontrarla en Ajustes > Claves API

Propiedades:

* Config: api\_key
* Var. de entorno: RCLONE\_SHADE\_API\_KEY
* Tipo: cadena
* Requerido: sí

### Opciones avanzadas

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

#### --shade-endpoint

Punto de conexión para el servicio.

Déjalo en blanco normalmente.

Propiedades:

* Config: endpoint
* Var. de entorno: RCLONE\_SHADE\_ENDPOINT
* Tipo: cadena
* Requerido: no

#### --shade-chunk-size

Tamaño de fragmento a usar para las subidas.

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

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

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

Propiedades:

* Config: chunk\_size
* Var. de entorno: RCLONE\_SHADE\_CHUNK\_SIZE
* Tipo: SizeSuffix
* Valor por defecto: 64Mi

#### --shade-encoding

La codificación para el backend.

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

Propiedades:

* Config: encoding
* Var. de entorno: RCLONE\_SHADE\_ENCODING
* Tipo: Encoding
* Valor por defecto: Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot

#### --shade-description

Descripción del remoto.

Propiedades:

* Config: description
* Var. de entorno: RCLONE\_SHADE\_DESCRIPTION
* Tipo: cadena
* Requerido: no

### Rutas de la API utilizadas por la integración de Rclone

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

**Nota:** El backend rclone gestiona la autenticación automáticamente usando tu clave API: solo necesitas preocuparte por los tokens de usuario si estás construyendo 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: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

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

The question should be specific, self-contained, and written in natural language.
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.
