"Después del juego es antes del juego"
Sepp Herberger

miércoles, 21 de diciembre de 2016

Descarga directa de linea de comandos desde Google Drive

Últimamente me veo en la tesitura de descargar ficheros bastante grandes (vídeos e imágenes de clonación, por ejemplo) que me pasan vía enlaces de Google Drive. Aunque la descarga se puede hacer desde el navegador a veces esto no es lo mas cómodo, ya que:
  • Por algún motivo inexplicable, estas descargas desde el navegador son mas delicadas y no es extraño que fallen. Concretamente, cuando van al 95%.
  • Si el destino del fichero es otro PC (por ejemplo, un servidor sin entorno gráfico y navegador) luego hay que copiar el fichero desde nuestro PC al destinatario.
  • Somos sysadmin, si algo se puede hacer por consola es una pérdida de tiempo andar moviendo el ratón.
Por tanto partimos de un enlace a un fichero almacenado de Google Drive (y compartido de forma pública) como éste:
https://drive.google.com/open?id=0B8np4HndYC-lQi0wamstRHF1S3M
Y queremos descargarlo como se descargan ficheros con wget o curl. Evidentemente, usar wget o curl con este enlace no funciona. Necesitamos otra herramienta llamada gdrive. En su página viene un completo manual ya que es una herramienta muy potente para interactuar de muchas formas con Google Drive desde línea de comandos, aunque a mi solo me interesa de momento descargar ficheros.

Lo primero es bajar el programa, que es un ejecutable tal cual sin empaquetar. Las versiones para Linux usables por nosotros son:
  • gdrive-linux-x64 2.1.0 Linux 64-bit 4fd8391b300cac45963e53da44dcfe68da08d843
  • gdrive-linux-386 2.1.0 Linux 32-bit de9f49565fc62552fe862f08f84694ab4653adc2
Bajamos la que corresponda según nuestra arquitectura, la hacemos ejecutable con chmod +x y la ponemos en /usr/local/bin o ruta similar. Una vez descargado debemos lanzar una ejecución inicial para activar la conexión de la aplicación con nuestra cuenta de Google Drive:
$ gdrive-linux-x64 about
Authentication needed
Go to the following url in your browser:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=367116223233053-7n0vf5akeru7on6o2fjinrareaccpdoe99eg.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3A33qb&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=state
¿Qué es esto?, pues una URL que hay que pegar en el navegador web, tras esto nos pedirán las credenciales de nuestra cuenta Gmail y mostrará esta pantalla:


Pinchando sobre "Permitir" nos dará el código de validación:
Copia este código, ve a tu aplicación y pégalo en ella:
4/Pvl90areaertc323a8acedTee9Jgoc
Copiando el código "4/Pvl90areaertc323a8acedTee9Jgoc" o el que nos salga, nos vamos al terminal desde donde hicimos "gdrive-linux-x65 about" y lo pegamos:
Enter verification code: 4/Pvl90areaertc323a8acedTee9Jgoc
Nos contestará con:
User: Tu nombre, tu.cuenta@gmail.com
Used: 6.0 GB
Free: 10.1 GB
Total: 16.1 GB
Max upload size: 5.2 TB
Una vez hecho esto ya tenemos la cuenta autenticada en gdrive (se ha creado un fichero en ~/.gdrive/token_v2.json, ojo con su custodia porque da acceso a nuestro Google Drive) y ya podemos lanzar la descarga usando el id del fichero en cuestión:
# gdrive-linux-x64 download 0B8np4HndYC-lQi0wamstRHF1S3M
Si es un fichero de varios Gigas y va a llevar horas es aconsejable usar screen como conté aquí.
Y nada mas, descarguen mientras sea gratis.

No hay comentarios:

Publicar un comentario en la entrada