[HowTo] Rclone: Subir y/o sincronizar archivos desde linea de comandos linux a Google Drive
Posted: domingo, 19 de mayo de 2019 by Termita in Etiquetas: cli, google drive, nube, nube pública, rclone, sincronizar, sistemas operativos, subir, terminalRclone es una herramienta que nos permite subir archivos y/o sincronizar carpetas en casi cualquier nube.
Hay documentación exhaustiva en el man del propio comando, en el manual de la web oficial y en MANKIER.
¿Como utilizar Rclone para subir archivos y/o sincronizar carpetas con Google Drive?
1. Crear un perfil de la cuenta de Google Drive que vamos a emplear (recibe el nombre de 'remote')
rclone config
No remotes found - make a new one
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
10 / Google Drive
\ "drive"
[snip]
Storage> drive
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
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
ID of the root folder - leave blank normally. Fill in to access "Computers" folders. (see docs).
root_folder_id>
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> y <-------- (*) si trabajamos en local es "yes", si trabajamos en remoto (por ssh por ejemplo) elegimos "no"
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a team drive?
y) Yes
n) No
y/n> n
--------------------
[remote]
client_id =
client_secret =
scope = drive
root_folder_id =
service_account_file =
token = {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2014-03-16T13:57:58.955387075Z"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
(*) Es recomendable que los perfiles almacenados en RClone esté protegidos con contraseña. Eso se hace de la siguiente manera:
rclone config
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> s
2. Subir ficheros y/o Sincronizar
RClone es especialmente susceptible con los espacios y carácteres raros en los nombres y rutas de los archivos.
2.a Subir
Copiar un directorio local a un directorio de Google Drive
rclone copy /DirectorioLocal NombreDelPerfilGoogleDrive:CarpetaRemota
por ejemplo: rclone copy -vv /home/usuario/peliculasdeaccion gdrivedemispeliculas:pelisaccion
Copiar un archivo local a un directorio de Google Drive
rclone copy /DirectorioLocal/NombreDeArchivo NombreDelPerfilGoogleDrive:CarpetaRemota
por ejemplo: rclone copy /home/usuario/peliculadeacción.avi perfilgdrivedemispeliculas:accion
2.b Sincronizar
Sincronizar un directorio local con un directorio de Google Drive. (*) Esto hará que el directorio remoto (directorio de Google Drive) se iguale con el directorio local. Si en el directorio local hay menos archivos que en el directorio remoto, los sobrantes de este último se borrarán. Por ejemplo, si en local tenemos la película 'a.avi' y en remoto (Google Drive) tenemos la película 'b.avi', tras sincronizar tendremos que tanto en remoto como en local habrá la película 'a.avi' y la película 'b.avi' se habrá borrado del remoto.
RClone comprueba diferencias para ficheros completos. No realiza, por tanto, una copia diferencial de un archivo en el que hayan cambiado solamente unos pocos bytes. Los archivos se copian completos. Esto se debe a que, a día de hoy, los almacenamientos en la nube no suelen permitir transferencias parciales de archivos.
rclone sync -vv /DirectorioLocal NombreDelPerfilGoogleDrive:CarpetaRemota
Por ejemplo rclone sync -vv /home/usuario/peliculasaccion NombreDelPerfilGoogleDrive:pelisaccion
*. Otros comandos útiles de RClone
Lista de todos los comandos
rclone --help
Ayuda específica de un comando concreto
rclone <comando> --help
Lista de remotes (perfiles de cuentas de almacenamiento remoto / en la nube) configurados en RClone
rclone listremotes
Información sobre un 'remoto' concreto: espacio ocupado y disponible
rclone about <remote>
Lista los ficheros que hay en la carpeta de un 'remoto', de manera recursiva, junto con su tamaño en bytes
rclone ls NombreDelPerfilRemoto:CarpetaRemota
Lista los ficheros que hay en la carpeta de un 'remoto, de manera recursiva, junto con su tamaño en bytes y además la fecha de modificación
rclone lsl NombreDelPerfilRemoto:CarpetaRemota
Lista de directorios de un 'remoto', pero solamente los del primer nivel. Es decir, no lo hace de forma recursiva
rclone lsd NombreDelPerfilRemoto:
Visualizar todos los ficheros y directorios de un 'remoto'
rclone lsf NombreDelPerfilRemoto:
Visualizar en forma de árbol todos los ficheros y directorios de un 'remoto'
rclone tree NombreDelPerfilRemoto:
Borrar ficheros o el contenido del directorio de un 'remoto'
rclone delete NombreDelPerfilRemoto:FicheroQueQueremosBorrar
Simular borrado de ficheros o del contenido del directorio de un 'remoto'
rclone delete NombreDelPerfilRemoto:FicheroQueQueremosBorrar --dry-run
Borrar ficheros mayores de, por ejemplo, 10 megabytes
rclone delete NombreDelPerfilRemoto: --min-size 10M
Consultar espacio que ocupan todos los archivos contenidos en un directorio y todos sus subdirectorios
rclone size NombreDelPerfilRemoto:CarpetaRemota
mkdir, move, moveto ó rmdir permiten gestionar carpetas y archivos. En la ayuda hay información detallada.
Filtrado de archivos [extraído de GMPROJECTS.ME]
En todas las acciones en la que se opera con ficheros o directorios, RClone permite definir unas reglas de filtrado, de manera que es muy fácil sincronizar una estructura de archivos, seleccionando cuáles queremos tener en cuenta y cuáles otros no.
Las expresiones de RClone utilizan un lenguaje prácticamente idéntico al que utiliza la herramienta rsync. Este lenguaje es conocido como "file globs" y se utiliza también en la shell de GNU/Linux.
Estas son las opciones relativas al filtrado y la selección de archivos:
--exclude <expresión>
Excluye fichero según la expresión. Para copiar todos los archivos excepto los que terminen en .tmp podemos utilizar esta línea de comando
rclone copy --exclude "*.tmp" mi_directorio_local mi_disco_OneDrive:/directorio_destino
El modificador --exclude se puede repetir para añadir varias reglas en un mismo comando
--exclude-from <fichero>
Lee varias expresiones de exclusión desde un fichero de texto. Es muy útil cuando necesitas definir reclas complejas. Solamente necesitas crear un fichero con las reglas utilizando el mismo leguaje glob.
## exclude.txt
.*
.*/**
*.tmp
Este archivo permite filtrar los ficheros ocultos, los directorios ocultos y los ficheros con extensión *.tmp
rclone copy --exclude-from "exclude.txt" mi_directorio_local mi_disco_OneDrive:/directorio_destino
--exclude-if-present <expresión>
Excluye un directorio completo si alguno de los ficheros que contiene cumple con la expresión. Puede ser muy útil para excluir de una acción directorios mediante la creación de un fichero vacío con nombre, por ejemplo, .ignore
rclone copy --exclude-if-present ".ignore" mi_directorio_local mi_disco_OneDrive:/directorio_destino
--include <expresión>
--include-from <fichero>
Estos modificadores realizan la función inversa a los anteriores. Solamente procesan los ficheros y directorios que cumplen con la expresión.
--ignore-existing
Ignora los archivos existentes en el destino.
--filter <expresión>
Permite definir reglas de inclusión y/o exclusión. Cuando quieres utilizar reglas más complicadas, donde tienes ficheros que incluir, pero quieres excluir algunos de ellos --filter te permite simplificar la definición de estas reglas. Simplemente tienes que añadir un símbolo + ó - delante para definir reglas de inclusión o exclusión.
Estos dos comandos son equivalentes
rclone copy --filter "- *.tmp" mi_directorio_local mi_disco_OneDrive:/directorio_destino
rclone copy --exclude "*.tmp" mi_directorio_local mi_disco_OneDrive:/directorio_destino
--filter-from <fichero>
La verdadera potencia de las reglas de filtrado está en el modificador --filter-from en el que se utiliza un fichero de texto para definir todas las reglas que necesitemos.
## filter.txt
+ *.jpg
+ *.png
- borrados/**
+ *.txt
El comando siguiente, utilizando esta definición de filtros copiará todas las imágenes en formato jpg y png y los archivos de texto, excepto aquellos dentro del directorio borrados.
rclone copy --filter-from "filter.txt" mi_directorio_local mi_disco_OneDrive:/directorio_destino
Otros comandos para filtrar archivos, en función de sus características, son:
--min-size <tamaño> Ignora los archivos cuyo tamaño es más pequeño que el especificado
--max-size <tamaño> Ignora los archivos cuyo tamaño es más grande que el especificado
--max-age <edad> Ignora los archivos con antiguedad mayor a la especificada
--min-age <edad> Ignora los archivos con antiguedad menor a la especificada
fuentes:
https://rclone.org/drive/