Posts mit dem Label Automatisierung werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Automatisierung werden angezeigt. Alle Posts anzeigen

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.

Sonntag, 9. November 2014

Wie sichere ich am besten meine Darktable Konfigurationsdateien sowie die Datenbank?

Der heutige Beitrag befasst sich mit der Sicherung der darktable Konfigurationsdateien sowie der dazugehörigen Datenbank.

Im letzten Beitrag habe ich erklärt, dass Änderungen an RAWs, nicht an der Datei selbst vorgenommen sondern in sidecar Dateien sowie in der darktable Datenbank gespeichert werden. Wobei die Datenbank (DB) aus Performance Gründung während der Laufzeit genutzt wird. Des Weiteren werden in der DB sogenannte Presets (Voreinstellungen) für Bearbeitungsmodule der Dunkelkammer (Darkroom) gespeichert, neben der DB nutzt darktable noch weitere Dateien, in denen Informationen wie Tastaturkürzel oder Styles* hinterlegt werden um all diese Einstellungen, zum Beispiel bei einer Neuinstallation, nicht zu verlieren ist ein Backup notwendig. 

*Styles sind eine Kombination aus verschiedenen Bearbeitungsmodulen die durch anwenden des Styles in Kombination auf das Bild angewendet werden. 

Bei uns kommt als Betriebssystem Ubuntu 14.04 (LTS) zum Einsatz die Befehle/Scripts lassen sich aber auch auf einem Debian ausführen. 

Als Voraussetzungen werden benötigt, zum einen sqllite3 und zum anderen ein Ordner, in dem die Sicherung abgelegt werden soll. Ich habe mich für einen Ordner mit dem Namen “backup”, der direkt im Home Verzeichnis abgelegt wird, entschieden. Falls ihr den Namen oder den Speicherort ändern möchtet, ist dies kein Problem nur muss dann der neue Name/Speicherort ebenfalls im Backupscript (Zeile 3) entsprechend angepasst werden. 

Mit den folgenden Befehlen wird sqlite3 installiert und das Sicherungsverzeichnis “backup” angelegt. Um die Befehle auszuführen öffnet ihr ein Terminal (Bei Ubuntu mit STRG+ALT+T) und führt die einzelnen Zeilen (ohne #) nacheinander aus.
#Install the sqlite3 prerequisite
sudo apt-get install sqlite3
#Go to the home directory of the current user
cd $HOME
#Create the folder “backup”
sudo mkdir backup
Damit das Backup ausgeführt werden kann brauchen wir noch eine Shellscript Datei, diese könnt ihr innerhalb des Terminals z.B. mit nano oder vi erstellen oder über die GUI mit einem Editor eurer Wahl. Wichtig ist nur das die Dateiendung .sh ist. Ich habe mir für meine Skripte im $HOME Verzeichnis einen Ordner mit dem Namen “scripts” angelegt. 
cd $HOME/scripts
nano backup_darktable_config_and_DB.sh
Falls die Sicherung nicht nur Lokal auf dem System, sondern auch auf einem NAS oder einer USB-Festplatte erfolgen soll, sehr zu empfehlen, müsst ihr bei den folgenden Zeilen Anpassungen vornehmen. 
Zeile 4: Das # Zeichen entfernen und einen sinnvollen Pfad eintragen
Letzte Zeile: Das # Zeichen entfernen
#!/bin/bash
#Variables
BackupDestinationLocal=$HOME/backup
#BackupDestinationExtern=Please insert something here! / Hier etwas sinnvolles eintragen!
DTLIB=$HOME/.config/darktable/library.db
DTNEWLIB=${DTLIB}-`date +%Y%m%d_%H%M`
ECHO=/bin/echo
SQLITE3=/usr/bin/sqlite3

#Go to darktable config folder and remove current backup
cd $HOME/.config/darktable/
rm -f library.db-*

#Backup darktable database
RESULT=`$ECHO .dump | $SQLITE3 $DTLIB | $SQLITE3 $DTNEWLIB`

if [ $? -eq 0 ]; then
$ECHO "Dumped $DTLIB to $DTNEWLIB"
else
$ECHO "FAILED to dump $DTLIB to $DTNEWLIB"
exit RESULT
fi

#Copy database backup and darktable config files to different locations
cd $HOME/.config/darktable/
cp -r styles $BackupDestinationLocal/styles-`date +%Y%m%d_%H%M`
cp darktablerc $BackupDestinationLocal/darktablerc-`date +%Y%m%d_%H%M`
cp keyboardrc $BackupDestinationLocal/keyboardrc-`date +%Y%m%d_%H%M`
cp $DTNEWLIB $BackupDestinationLocal
#cp -r $BackupDestinationLocal/* "$BackupDestinationExtern"
Damit ihr das Script anschließend auch benutzen könnt müsst ihr es noch ausführbar machen, dafür könnt ihr den nachfolgenden Befehl im Terminal benutzen. Gegebenenfalls ist der Speicherort und der Name der Datei anzupassen.
#Owner read/write/execute; Group read/write; other no permission
sudo chmod 760 $HOME/scripts/backup_darktable_config_and_DB.sh
Abschließend können wir das Script ausprobieren
cd $HOME/scripts
sudo ./backup_darktable_config_and_DB.sh
ls -alh $HOME/backup
Bei Fragen zu den Skripten oder bei Anregungen stehe ich gerne zur Verfügung.
Hinterlasst einfach einen Kommentar.