Effizienter Dateitransfer von Dropbox zu SFTP mit Optimierung

Als wir die Re-loadit-Serie zuletzt unterbrochen haben, habe ich ein Beispiel behandelt, das den Robot /dropbox/store verwendet. Dieses Mal möchte ich Dateien aus meiner persönlichen Dropbox importieren. Wir bleiben also beim Thema Dropbox: Jetzt ist der Robot /dropbox/import an der Reihe zu glänzen!
Der /dropbox/import Robot
Im Gegensatz zum Robot /dropbox/store ermöglicht Ihnen der Robot /dropbox/import, Verzeichnisse direkt aus Ihrem Dropbox-Speicher zu importieren und an andere Steps innerhalb einer Assembly weiterzugeben.

Bilder gehören zu den beliebtesten Dateitypen, die auf Dropbox gespeichert werden. Aus persönlicher Sicht nutze ich meine Dropbox neben der Ablage meiner Rechnungen vor allem, um verschiedene Bilder zu speichern und sie mit Freunden und Familie zu teilen. Dennoch ist Dropbox als Dienst nicht immer ideal. Persönlich fühle ich mich wohler, wenn ich einige meiner Dateien auf meinem eigenen SFTP-Server ablege. Zumal mir auf Dropbox langsam der Speicherplatz ausgeht und mein Studentenbudget kein Dropbox-Abo zulässt 😉
Für dieses Beispiel stelle ich daher eine Assembly vor, mit der ich die Bilder aus einem meiner Dropbox-Ordner auf meinen SFTP-Server verschieben kann, der auf meinem ganz eigenen Raspberry Pi läuft. Als zusätzlichen Schritt möchte ich außerdem die Dateigröße dieser Bilder reduzieren, da die SD-Karte meines Raspberry Pi nur 8 GB groß ist.
Für alle Neugierigen: So sieht der Dropbox-Ordner mit den gewünschten Bildern aus. Darin liegt ein Mix aus Mediendateien, daher brauche ich auch eine Möglichkeit, die unerwünschten Dateien herauszufiltern.

Sehen wir uns an, wie genau sich eine solche Assembly erstellen lässt. Machen Sie gern mit!
Die Assembly erstellen
Für diese Aufgabe nutze ich vier Robots:
- Den Robot /dropbox/import, um aus meinem Ordner media/ zu holen, was ich brauche;
- den Robot /file/filter, um sicherzustellen, dass unerwünschte Dateitypen herausgefiltert werden;
- den Robot /image/optimize, um die Dateigröße der importierten Bilder zu reduzieren; und
- schließlich den Robot /sftp/store, mit dem ich alles auf meinem eigenen SFTP-Server speichern kann.
Das ist eine ordentliche Anzahl an Robots, die einige recht komplexe Aufgaben erledigen. Sehen Sie sich das Template an, das ich unten erstellt habe:
{
"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}"
}
}
}
Wie üblich bewahre ich die Zugangsdaten sowohl für mein Dropbox-Zugriffstoken als auch für meine
SFTP-Angaben (etwa den Hostnamen) sicher im Bereich
Template-Zugangsdaten von Transloadit auf. Im ersten
Step importiert der Robot
/dropbox/import alle Dateien, die im Parameter path angegeben sind, in
diesem Fall meinen Ordner media/. Dieser Ordner enthält eine Reihe von Bildern, aber auch
verschiedene andere Dateien wie Dokumente und mp3s.
Nicht alle diese Dateien sind relevant, daher verwende ich den Robot /file/filter, um alles herauszufiltern, was kein jpeg, png, svg oder tiff ist. Der beeindruckende Robot /image/optimize nimmt sich dann diese Bilder vor und hilft dabei, ihre Dateigröße zu reduzieren und gleichzeitig ihre Qualität zu erhalten. Schließlich exportiere ich die Ergebnisse auf meinen SFTP-Server, wo sie es sich auf meinem Raspberry Pi gemütlich machen können.
Die Ergebnisse
Nach einem kurzen Blick auf das Dateisystem meines Pi sehen die Ergebnisse gut aus! Alle Bilder, die in meinem Dropbox-Ordner media/ lagen, sind jetzt auch auf meinem SFTP-Server vorhanden. Und als netten Bonus konnte ich einige Dateigrößen zusätzlich verkleinern! 😍

Bleiben Sie dran für die nächste Folge unserer Re-loadit-Serie!