21 Dez 2016

Bilder-to-go: Eure Fotos in der Cloud mit „Sync-Pictures“

Heute will ich euch mal was über ein Thema schreiben, welches primär nichts mit Surface Devices zu tun hat. Es zeigt euch aber, wie man seine Bildersammlung einfach und simpel mit auf die Reise nehmen kann und auch noch für ein Backup sorgt.

Vor nunmehr 15 Jahren habe ich die digitale Fotografie für mich entdeckt und praktiziere diese als Hobby. Ihr könnt euch sicherlich vorstellen, wie viele Bilder da so im Lauf der Jahre zusammengekommen sind (bei mir sind es gut 48.000).

Und da stellen sich einem Hobbyfotograden automatisch zwei Fragen:

  1. Wie sorge ich bei so vielen Bildern für ein Backup?
  2. Wie kann ich einfach, kostengünstig und überall auf meine Fotosammlung zugreifen?

Die Antwort auf diese Fragen lautet: mit OneDrive

Denn

  1. Bietet mir OneDrive die Möglichkeit eine Sicherung meiner Bilder zu bekommen
  2. Ist OneDrive bis zu einem Speichervolumen von 5 GB kostenlos, 50 GB kosten 2€/Monat, Office 365 Kunden bekommen 1 TB Speicherplatz auf OneDrive ohne Zusatzkosten (alle Preise: https://onedrive.live.com/about/de-De/plans/)

Was ich mich jedoch in diesem Zusammenhang gefragt habe: brauche ich wirklich ein 1:1 Abbild meiner Bildersammlung auf OneDrive? Für mich heißt dabei die Antwort: „Nein“. Mir genügt nämlich eine verkleinerte Version der Bilder, welche mir dann einen schnellen, mobilen Zugriff gestattet.

Und so habe ich begonnen meine Dateien mit IrfanView herunter zu skalieren und im OneDrive-Ordner abzulegen.

Wichtig war mir dabei eine gute Gliederung, damit ich meine Bilder auch schnell finden kann. Ich habe mich für eine Gliederung nach Jahreszahlen gefolgt von Hauptthemen und dann Unterthemen entschieden, das sieht dann z.B. so aus:

explorer

Allerdings war mir der manuelle Abgleich mit IrfanView mit der Zeit zu aufwändig und auch nicht konstant genug. Denn wenn ich z.B. Bilder in der Quelle verschiebe, umbenenne oder gar lösche, dann muss das auch in der OneDrive-Struktur nachgezogen werden.

Und aus diesem Grund habe ich mich entschieden ein passendes PowerShell-Skript zu bauen, welches diese Aufgaben automatisch für mich erledigt. Und so präsentiere ich:

Sync-Pictures.ps1

Und was genau kann das Skript so alles? Da ist mit der Zeit viel zusammengekommen:

  • JPG-Files von einem Quellverzeichnis rekursiv einlesen, falls diese im Zielverzeichnis nicht vorhanden sind herunterrechnen und mit gleicher Ordnerstruktur ablegen.
  • Automatisch erkennen, wenn im Zielverzeichnis ein Bild vorhanden ist, welches in der Quelle fehlt, und dieses löschen.
  • Erkennen, wenn ein Bild in Quelle und Ziel vorhanden, aber in der Quelle neuer ist (z.B. nach einer Bearbeitung mit PhotoShop). Das Ziel wird dann aktualisiert.
  • Verzeichnisse auf Wunsch ignorieren (z.B. Verzeichnisse mit unerwünschten Bildern – diese heißen bei mir BACKUP).
  • Die Zielauflösung der Datei automatisch anhand der aktuellen Displayauflösung ermitteln (so habe ich immer die optimale Auflösung). Diese Werte kann man bei Bedarf aber auch manuell steuern.
  • Nur Hauptverzeichnisse synchronisieren, die mit einer Jahreszahl beginnen (Standard) oder aber auch alle.

Und was habt ihr davon?

Natürlich will ich euch von meiner Arbeit profitieren lassen und stelle euch das Skript zur Verfügung! Aber keine Angst, um es zu nutzen benötigt ihr keinerlei Programmierkenntnisse. Ihr bekommt alles geliefert, damit das Skript für euch möglichst einfach zu nutzen ist.

Installation

Voraussetzung:

  • Auf eurem System muss IrfanView in der 32bit Version installiert sein. Falls ihr das nicht habt könnt ihr es hier herunterladen: http://www.irfanview.net/
  • Auf eurem System muss die Ausführung von PowerShell-Scripts erlaubt sein, was standardmäßig nicht der Fall ist. Um die Ausführung zu erlauben müsst ihr eine PowerShell als Administrator ausführen (ruft Powershell.exe über das Windows Startmenü auf – rechtklick „Als Administrator ausführen“ nicht vergessen)  und folgenden Befehl eingeben: set-executionpolicy remotesigned -force

Die Installation ist denkbar einfach:

  • Ladet euch das ZIP-File herunter und entpackt es in ein beliebiges Verzeichnis
  • Öffnet den Explorer und geht in das Verzeichnis, in welches ihr das ZIP-File entpackt habt
  • Führt einen Rechtsklick auf die Datei install.ps1 aus und wählt im Menü Mit PowerShell ausführen
  • Es öffnet sich kurz ein PowerShell-Fenster und auf eurem Desktop erscheint ein Icon mit dem Namen Sync-OneDrive

Anpassung

Die Standardinstallation geht von folgenden Punkten aus:

  1. Das Quellverzeichnis ist das Bilderverzeichnis in eurem Profil (%userprofile%\pictures)
  2. Das Zielverzeichnis ist das Unterverzeichnis Bilder in eurem OneDrive-Ordner und dieser liegt in eurem Profil (%userprofile%)
  3. Die Bilder sind nach Jahreszahlen gegliedert (wie auf meinem Explorer-Screenshot)
  4. Nur Hauptordner mit Jahreszahlen sollen synchronisiert werdenl
  5. Ordnernamen, die den Begriff BACKUP enthalten oder genau so heißen werden ignoriert

Natürlich lässt sich das alles anpassen. Dazu müsst ihr nur die Datei sync.cmd aus dem Zielverzeichnis, in das ihr das ZIP-File entpackt habt in einen Editor laden. Das sieht dann so aus:

@echo off

set Source = %userprofile%\Pictures
set Target = %userprofile%\OneDrive\Bilder
set Filter = “BACKUP” set Home   = %~dp0

set /p year=Jahreszahl nennen oder Eingabetaste:
if „%year%“== „“ (
powershell -file %Home%\Sync-Pictures.ps1 -SourceDir „%Source%“ -TargetDir „%Target%“ -mode both -filter %Filter%
goto :end
)
powershell -file %Home%\Sync-Pictures.ps1 -SourceDir „%Source%\%year%“ -TargetDir „%Target%\%year%“ -mode both -filter %Filter% -all :end pause

  • Um Quell- bzw. Zielverzeichnis zu verändern müsst ihr lediglich die Variablen Source bzw. Target entsprechend anpassen
  • Sind die Bilder nicht nach Jahreszahl gegliedert, so müsst ihr am Ende der ersten Zeile, welche powershell aufruft, noch den Parameter „ -all“ ergänzen. Natürlich macht dann die Abfrage der Jahreszahl keinen Sinn mehr, diese müsst ihr dann grundsätzlich mit der Eingabetaste übergehen
  • Sollen andere Verzeichnisse als BACKUP gefiltert werden, so müsst ihr die Variable Filter entsprechend anpassen. Ihr könnt auch mehrere Filter setzen, die Einträge sind dabei durch ein Komma getrennt (z.B. set Filter = „Backup“,“Trash“)

Nutzung

Die Nutzung ist sehr einfach. Zum Start müsst ihr nur das Icon Sync-OneDrive auf dem Desktop anklicken oder die Tastenkombination <Strg><Alt><S> (das kann in den Eigenschaften des Icons auf dem Desktop auch geändert werden) betätigen . Es öffnet sich ein Fenster, welches eine Jahreszahl abfrägt. Nun gebt ihr entweder die Jahreszahl ein, deren Bilder synchronisiert werden sollen (das wäre dann der Ordner mit der entsprechenden Jahreszahl) oder ihr drückt einfach direkt die Eingabetaste, dann werden alle Bilder synchronisiert.

Das war’s eigentlich schon, die Synchronisation der Ordner wird im Fenster angezeigt. Je nach Umfang kann das natürlich recht lange dauern. Die Dauer hängt dabei von der Anzahl der Bilder, deren Auflösung und von der Systemleistung (CPU, Disks) sowie der verfügbaren Internetgeschwindigkeit für den Upload zu OneDrive ab.

Direkte Nutzung von Sync-Pictures

Natürlich kann das PowerShell-Skript auch direkt in einer PowerShell Commandline aufgerufen werden. Alternativ ändert ihr die Parameter in der Datei sync.cmd, mit der das Skript aufgerufen wird.

Das solltet ihr natürlich nur machen, wenn ihr mit der Nutzung von PowerShell-Skripten und Commandlets vertraut seit.

Folgender Befehl, ausgeführt im Verzeichnis, in dem das Skript liegt, zeigt euch eine ausführliche Hilfe an:

Get-help Sync-Pictures.ps1 -full

Wieder entfernen

Ihr habt das Tool getestet, habt aber keine weitere Verwendung dafür? Schade, aber natürlich kein Problem. Einfach das Icon auf dem Desktop löschen und den Ordner, in den ihr das ZIP-File entpackt hattet wieder löschen – fertig!

Und weiter?

Ich würde mich freuen, wenn ihr mir Feedback zu diesem kleinen Projekt geben würden. Auch sind Entwickler herzlich eingeladen das Skript weiter zu verbessern. Über eine Email mit euren Verbesserungen würde ich mich sehr freuen!

 

 

Über den Autor: Thomas Paatsch

Thomas Paatsch
Wie auch Ralf bin ich ein Fan der Surface Produktfamilie und bin neben ihm hier einer der Hauptverfasser von Artikeln zu diesem Themengebiet. Ich schaue aber auch gerne mal über den Rand und so ist aktuell mein Hauptgerät ein Toshiba Notebook. In meinem Haushalt gibt es aber auch ein Surface Laptop.