Mittwoch, 12. November 2014

Wie kommen die Bilder von der Speicherkarte auf den Rechner?

Zurzeit fotografiere ich mit einer Canon 20D, diese hat die Eigenschaft alle einhundert Fotos auf der Speicherkarte einen neuen Ordner anzulegen. Wenn die Bilder von der Speicherkarte, mit einem Kartenleser, auf meine lokale USB-Festplatte kopiert werden sollen, müsste ich jeden Ordner einzeln öffnen und die Fotos jeweils im Hunderterpack kopieren. Nach einem längeren Urlaub mit durchaus mehr als eintausend Bildern ist dieser Prozess etwas nervig. Daher habe ich mir ein Script geschrieben, dass das Suchen sowie Kopieren der Dateien für mich automatisiert übernimmt. Außerdem fragt die Scriptroutine verschiedene Parameter wie Bilder-Ordnername sowie Quell- und Zielverzeichnis ab. Der definierte Bilderordner wird dann automatisch im Zielverzeichnis erstellt.

Das Wir RawDroid während eines Urlaubs benutzen um am Tablet unserer Bilder mit Schlagworten Sternchen und/oder Farbcodes zu versehen hatte ich in einem letzten Beitrag schon erwähnt. RawDroid legt nun die sidecar Dateien in der folgenden Logik Name+Bildnummer.Bilddateiendung.xmp an. Anhand dieses Formats kann dartable keine Zuordnung zwischen Bild und sidecar Datei vornehmen, dies würde bedeuten, dass alle oben beschriebenen Definitionen nicht nutzbar wären.

Eine weitere Funktion des Scriptes ist, dass die angelegten RawDroid sidecar Dateien nach dem Kopiervorgang, in ein Format (Name+Bildnummer.xmp) umbenannt werden, mit dem es darktable gelingt die notwendige Zuordnung herzustellen.

Unter dem Text findet ihr vier Scripte die Ersten beiden inkludieren alle Funktionen wie Ordner erstellen, Kopieren und sidcar Dateien umbenennen. Die darauf folgenden haben nur die Funktion die sidcar Dateien in das richtige darktable lesbare Format zu bringen.

Um eine andere Vorgabe für das Quell/Zielverzeichnis zu definieren, müsst ihr in der Scriptvariable ( z.B. -i "/media/rs/EOS_DIGITAL/"), den Teil der in Anführungszeichen eingefasst ist, anpassen.

Damit ihr nun das ein oder andere Script auf eurem System implementieren könnt sind die gleichen Schritte wie im letzten Artikel detailliert beschrieben notwendig, nachfolgend noch mal eine kleine Zusammenfassung.
cd $HOME/scripts
nano copyPictures_from_CardReader_to_disk.sh
sudo chmod 760 copyPictures_from_CardReader_to_disk.sh
nano rename_only_XMP.sh
sudo chmod 760 rename_only_XMP.sh
#Scripttest
sudo ./copyPictures_from_CardReader_to_disk.sh
#oder
sudo ./rename_only_XMP.sh

Script mit allen Variablen, Beschreibungen und Abfragen in Englisch:
#!/bin/bash
#Define the working directory
read -e -p "Enter source path:" -i "/media/rs/EOS_DIGITAL/" SOURCE
read -e -p "Enter the path for the files:" -i "/media/rs/My\ Book/\!Picture_Backup/" FILEPATH
read -e -p "Enter the name of the new directory:" DIRECTORY
cd "$FILEPATH"

#Create a new directory for the pictures
#Neues Bilderverzeichnis erstellen
mkdir "$DIRECTORY"

#Copy only files no OS related files
#Nur Dateien keine Betriebssystemdateien kopieren
find $SOURCE -type f \( ! -iname "*.nomedia" ! -iname "*._*" \) -exec rsync -ah --progress {} "$FILEPATH/$DIRECTORY" \;

#Rename the XMP files to a darktable readable format
#Dateien in ein darktable kompatibles Format umbenennen
find "$FILEPATH/$DIRECTORY" -type f \( -iname "*.xmp" ! -iname "*CR2*" \) -print0 | xargs -0 rename 's/.xmp$/.CR2.xmp/'

Script mit allen Variablen, Beschreibungen und Abfragen in Deutsch:
#Arbeitsverzeichnisse definieren
read -e -p "Bitte Quellpfad eingeben oder mit Enter die Vorgabe bestätigen:" -i "/media/rs/EOS_DIGITAL/" QUELLE
read -e -p "Bitte Zielpfad eingeben oder mit Enter die Vorgabe bestätigen:" -i "/media/rs/My\ Book/\!Picture_Backup/" DATEIPFAD
read -e -p "Bitte neuen Verzeichnisnamen eingeben:" ORDNERNAME
cd "$DATEIPFAD"

#Neues Bilderverzeichnis erstellen
mkdir "$ORDNERNAME"

#Nur Dateien keine Betriebssystemdateien kopieren
find $QUELLE -type f \( ! -iname "*.nomedia" ! -iname "*._*" \) -exec rsync -ah --progress {} "$DATEIPFAD/$ORDNERNAME" \;

#Dateien in ein darktable kompatibles Format umbenennen
find "$DATEIPFAD/$ORDNERNAME" -type f \( -iname "*.xmp" ! -iname "*CR2*" \) -print0 | xargs -0 rename 's/.xmp$/.CR2.xmp/'

Script mit allen Variablen, Beschreibungen und Abfragen in Englisch:
#!/bin/bash
#Define the working directory
read -e -p "Enter the path to the files: " -i "/media/rs/EOS_DIGITAL/" FILEPATH

#Rename the XMP files to a darktable readable format
find $FILEPATH -type f \( -iname "*.xmp" ! -iname "*CR2*" \) -print0 | xargs -0 rename 's/.xmp$/.CR2.xmp/'

Script mit allen Variablen, Beschreibungen und Abfragen in Deutsch:
#!/bin/bash
#Arbeitsverzeichnisse definieren
read -e -p "Bitte Quellpfad eingeben oder mit Enter die Vorgabe bestätigen:" -i "/media/rs/EOS_DIGITAL/" FILEPATH

#Dateien in ein darktable kompatibles Format umbenennen
find $FILEPATH -type f \( -iname "*.xmp" ! -iname "*CR2*" \) -print0 | xargs -0 rename 's/.xmp$/.CR2.xmp/'

Wie immer stehe ich bei Fragen zu den Skripten oder bei Anregungen gerne zur Verfügung. 
Hinterlasst einfach einen Kommentar.

Keine Kommentare:

Kommentar posten