1.- Instalar `rclone` en el servidor (si el servidor no tiene interfaz gráfica también instalalo en tu PC o laptop )

```bash
sudo apt install rclone
```

2.- Para poder usar la herramienta y mandar archivos al servidor debemos hacer la configuración inicial mediante el comando:
```bash
rclone config
``` 

Primero debemos crear un repositorio remoto, para ello la herramienta nos hará una serie de preguntas y en algunos casos nos dará opciones, en la consola deberás ingresar cada una de las opciones seguida de la tecla enter:

2.1.- La primera vez debemos crear nuestro primer remoto, así que ingresa la letra **n** y **enter**:
```bash
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
```

2.2.- Nombre de nuevo remoto (no dejes espacios, mejor usa guion bajo):
```bash
Enter name for new remote.
name> db_backups
```

2.3.- Selección de la opción 18, es la opción de Google Drive
```bash
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.

18 / Google Drive
   \ (drive)

Storage> 18
```

2.4.- Te pedirá tu id de cliente de Google pero si no lo tienes solo da enter:
```bash
Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a value. Press Enter to leave empty.
client_id>
```

2.5.- Solicitará tu clave de OAuth pero lo puedes dejar vacío, solo da enter:
```bash
Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>
```

2.6.- Te pedirá el tipo de acceso que le darás a Drive, para esta caso yo elegiré la 1 que es acceso total a archivos.

```bash
Option scope.
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
 1 / Full access all files, excluding Application Data Folder.
   \ (drive)
 2 / Read-only access to file metadata and file contents.
   \ (drive.readonly)
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ (drive.file)
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ (drive.appfolder)
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ (drive.metadata.readonly)
scope> 1
```

2.7.- Te pedirá la ruta de las credenciales en formato JSON pero lo puedes dejar en blanco y solo dar enter:
```bash
Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a value. Press Enter to leave empty.
service_account_file>
```

2.8- Preguntará si quieres editar la configuración avanzada, la opción es no (n):
```bash
Edit advanced config?
y) Yes
n) No (default)
y/n> n
```

2.9.- Te preguntara si quieres usar el método de configuración automática, pero **ingresa que no, ya que usa una UI y el servidor no tiene interfaz gráfica**. 

```bash
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n> n
```

2.9.1.- Del comando anterior  en consola te mostrará un mensaje como este:
```bash
Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
        rclone authorize "drive" "ayXzY01uSSI8ImRiaXZlIm0"
Then paste the result.
Enter a value.
config_token>
```


En tu computadora local, **NO EN EL SERVIDOR**, deberás abrir una terminal (previamente debiste instalar rclone en esa maquina), y pegar el comando que te da la terminal del servidor que en este caso es:
```bash
rclone authorize "drive" "ayXzY01uSSI8ImRiaXZlIm0"
```

De ese comando verás que te despliega la consola una respuesta como esta:
```bash
2025/06/03 13:12:35 NOTICE: Config file "/home/dave/.config/rclone/rclone.conf" not found - using defaults
2025/06/03 13:12:35 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=VQQBIGPyiSNLYReNNPIXmj
2025/06/03 13:12:35 NOTICE: Log in and authorize rclone for access
2025/06/03 13:12:35 NOTICE: Waiting for code...
```

En la segunda línea del mensaje, copia y pega en tu navegador la URL que aparece despues de link, en este caso es: http://127.0.0.1:53682/auth?state=VQQBIGPyiSNLYReNNPIXmj

En tu navegador te aparecerán las cuentas de gmail, selecciona la cuenta de gmail que corresponde al DRIVE que le darás acceso a rclone, de forma inmediata el navegador te dará un mensaje de **SUCCESS** y debes regresar a tu consola de tu maquina local y te dará un hash largo similar a este:
```bash
Paste the following into your remote machine --->
eyJ0b2tlbiI6IntcImFjY2Vzc19....[muchos-caracteres]....NjowMFwifSJ9
<---End paste
```
Copia lo que esta entre las flechas (---> hash <---) y pégalo en la terminal de tu servidor VPS.

2.10.- Te preguntará que si es un drive compartido, en este caso es no:

```bash
Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)
y/n> n
```

2.11.- Finalmente te hará la pregunta de si quieres mantener la configuración hecha, debes ingresar la y:
```bash
Configuration complete.
Options:
- type: drive
- scope: drive
- token: {"access_token":"datos-de-tu-token-de-acceso","token_type":"tu-tipo-de-token","refresh_token":"hash-del-token","expiry":"time-stamp-expiracion"}
- team_drive:
Keep this "db_backups" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
```

Listo, tu configuración ya esta hecha, ahora solo debes salir de rclone ingresando la letra `q` seguida del enter, y en 

### Subir carpeta con `rclone copy`

Este comando copia los archivos de origen a destino, sin borrar nada en destino.

```bash
rclone copy /ruta/local/de/la/carpeta formha_db_backups:/carpeta-en-drive
```

rclone copy /home/dix/backups-db/ formha_db_backups:/formha-db-backups


* `/ruta/local/de/la/carpeta` → la carpeta en tu VPS que quieres subir.
* `formha_db_backups:/carpeta-en-drive` → la carpeta en tu Google Drive (se creará si no existe).

Ejemplo:

```bash
rclone copy /home/dix/backups formha_db_backups:/backups-vps -p --v
```

Esto copiará todo el contenido de `/home/dix/backups` a la carpeta `backups-vps` en Google Drive.

---

### Subir carpeta con `rclone sync`

Si quieres que la carpeta en Google Drive **quede idéntica** a la local (borra archivos en Drive que no estén en local):

```bash
rclone sync /ruta/local/de/la/carpeta formha_db_backups:/carpeta-en-drive
```

Ten cuidado con `sync` porque puede eliminar archivos en Drive.

---

### Otros tips útiles

* Para ver el contenido en Drive:

```bash
rclone ls formha_db_backups:/carpeta-en-drive
```

* Para hacer dry-run (simular qué pasaría sin cambios reales):

```bash
rclone copy --dry-run /home/dix/backups formha_db_backups:/backups-vps
```

---

¿Quieres que te ayude con un script automático o programación de backups?



