Transferencia eficiente y optimizada de archivos: Dropbox a SFTP

Cuando lo dejamos la última vez en la serie Re-loadit, analicé un ejemplo con el Robot /dropbox/store. Esta vez quiero importar archivos desde mi Dropbox personal. Así que, siguiendo con la temática de Dropbox, ¡le llegó el turno de brillar al Robot /dropbox/import!
El Robot /dropbox/import
A diferencia del Robot /dropbox/store, el Robot /dropbox/import te permitirá importar directorios directamente desde tu almacenamiento de Dropbox para pasarlos a otros Steps dentro de una Assembly.

Las imágenes son uno de los tipos de archivo más populares que se almacenan en Dropbox. Desde un punto de vista personal, además de guardar mis facturas, uso mi Dropbox sobre todo para almacenar diversas imágenes y compartirlas con amigos y familiares. Dicho esto, Dropbox como servicio no siempre es ideal. Personalmente, me siento más cómodo almacenando algunos de mis archivos en mi propio servidor SFTP. Sobre todo porque estoy empezando a quedarme sin espacio en Dropbox y mi presupuesto de estudiante no da para una suscripción a Dropbox 😉
Así que, para este ejemplo, presentaré una Assembly que me permite mover las imágenes de una de mis carpetas de Dropbox a mi servidor SFTP, que funciona en mi propia Raspberry Pi. Como paso adicional, también quiero reducir el tamaño de archivo de estas imágenes, ya que la tarjeta SD de mi Raspberry Pi es de solo 8 GB.
Para los curiosos, la carpeta de Dropbox que contiene las imágenes que quiero se ve así. Aquí hay una mezcla de archivos multimedia, así que también necesitaré una forma de filtrar los archivos no deseados.

Veamos cómo construir exactamente una Assembly así. ¡Puedes seguir los pasos si quieres!
Crear la Assembly
Para esta tarea usaré cuatro Robots:
- El Robot /dropbox/import para obtener lo que necesito de mi carpeta media/;
- El Robot /file/filter para asegurarme de descartar cualquier tipo de archivo no deseado;
- El Robot /image/optimize para reducir el tamaño de archivo de las imágenes que se importan; y
- Por último, el Robot /sftp/store me permitirá almacenar todo en mi propio servidor SFTP.
Son bastantes Robots realizando tareas bastante complejas. Mira el Template que creé a continuación:
{
"steps": {
"imported": {
"robot": "/dropbox/import",
"result": true,
"credentials": "my_dropbox_credentials",
"path": "media/"
},
"filtered_images": {
"use": ["imported"],
"robot": "/file/filter",
"result": true,
"accepts": [["${file.mime}", "regex", "image/(jpeg|png|svg|tiff)"]]
},
"optimize": {
"use": ["filtered_images"],
"robot": "/image/optimize",
"priority": "compression-ratio",
"progressive": false,
"preserve_meta_data": false,
"fix_breaking_images": true
},
"exported": {
"use": ["optimize"],
"robot": "/sftp/store",
"credentials": "my_sftp_credentials",
"path": "/home/pi/sftp/images/${file.original_basename}.${file.ext}"
}
}
}
Como de costumbre, prefiero mantener a salvo las credenciales tanto de mi token de acceso de Dropbox
como de los datos de SFTP (como el nombre de host) en la sección
credenciales de Template de Transloadit. Desde el
Step inicial, el
Robot /dropbox/import
importará todos los archivos especificados por el parámetro path, en este
caso mi carpeta media/. Esta carpeta contiene varias imágenes, pero también algunos archivos
diversos, como documentos y archivos mp3.
No todos esos archivos son relevantes, así que uso el Robot /file/filter para descartar todo lo que no sea jpeg, png, svg o tiff. Después, el impresionante Robot /image/optimize toma esas imágenes y ayuda a reducir su tamaño de archivo manteniendo su calidad. Por último, exporto los resultados a mi servidor SFTP, donde viven cómodamente en mi Raspberry Pi.
Los resultados
Tras una revisión rápida del sistema de archivos de mi Pi, ¡los resultados se ven bien! Todas las imágenes que estaban en mi carpeta media/ de Dropbox ahora también están en mi servidor SFTP. Y como bonus, ¡también logré recortar algunos de los tamaños de archivo! 😍

¡Mantente atento a la próxima entrega de nuestra serie Re-loadit!