Daten von einer Digitalkamera auf eine USB Festplatte verschieben
Ich habe ein Script
find_usb_path
geschrieben, welches alle
usb-devices bzw. alle
Windows Laufwerke, nach einem
vorgegebenen Verzeichnis durchsucht. Ich habe hier ein erweitertes Beispiel aufgeführt, um Daten von einer Digitalkamera auf eine USB Festplatte zu verschieben.
Installation
Die Skripte per
cut&paste in einen Editor übertragen und speichern. Voraussetzung für das Funktionieren der Anwendung ist, das die Scripte in ein Verzeichnis kopiert werden, welche im
Suchpfad der shell liegen, und das sie auch
Ausführrechte haben. Dafür wirden benötigt:
1.)
output_format.sh sorgt für farbige ausgaben
#!/bin/bash
red="\033[31m" red_bg="\033[41m"
green="\033[32m" green_bg="\033[42m"
yellow="\033[33m" yellow_bg="\033[43m"
blue="\033[34m" blue_bg="\033[44m"
magenta="\033[35m" magenta_bg="\033[45m"
ende="\033[0m\n"
ende1="\033[0m"
2.)
find_os.sh Betriebssystem abfragen
#! /bin/bash
# Welches Betriebssystem wird verwendet?
# ======================================
find_os(){
if test -d "c:/"; then
operating_system="windows";
else
operating_system="linux";
fi
}
3.)
find_usb_path.sh das besagte Script...
#!/bin/bash
# USB Device/Windowslaufwerke abfragen
# ------------------------------------
find_usb_path(){
mountpath="mnt/sd"
usb_path=""
extjpg="*.[jJ][pP][gG]"
find_linux_device(){
if test -d "$HOME/${drive_directory}"; then
usb_path="$HOME/${drive_directory}"
else
# suche in USB Devices
for i in a b c d e f g h i j k l m n o p q r s t x y z
do
if test -d /${mountpath}${i}1/${drive_directory}; then
usb_path="/${mountpath}${i}1/${drive_directory}"
fi
done
fi
}
find_win_drive(){
mountpath=""
for i in c d e f g h i j k l m n o p q r s t x y z
do
if test -d ${mountpath}${i}:/${drive_directory}; then
usb_path="${mountpath}${i}:/${drive_directory}"
fi
done
}
select_os(){
case "${operating_system}" in
'windows')
find_win_drive
iview_app="xnview"
;;
'linux')
find_linux_device
iview_app="xnview"
;;
*)
echo -e "${red_bg}nicht erkanntes OS!${operating_system}${ende1}";
exit
;;
esac
}
meldungen(){
# pfad vorhanden?
if test -d "${usb_path}"; then
echo -e "pfad: ${red}${usb_path}${ende1} für ${green}${drive_directory}${ende1} vorhanden"
else
echo -e "pfad für ${green}${drive_directory}${ende1} ${red_bg}nicht${ende1} vorhanden ${red_bg}beende${ende1} script"
exit
fi
}
find_os
select_os
meldungen
}
4.)
digia.sh in der praktischen Anwendung aller Schripte zusammen.
#! /bin/bash
#-Bilder von Digitalkamera nach USB Festplatte verschieben, Ordner werden Chronologisch benannt-#
# Features
# ========
# 1. Alle usb Devices unter Linux bzw. alle Laufwerke(c:-z:) unter Windows nach einem hier vorgegebenen
# Ziel-Verzeichnis durchsuchen, bzw. nach der Kamera suchen.
# 2. ein Verzeichnis mit dem aktuellen Datum erzeugen.
# Wenn schon ein Verzeichnis mit dem aktuellen Datum existiert, dann ein weiteres anlegen,
# aber zusätzlich mit der Uhrzeit im Verzeichnisnamen.
# 3. Bilder bzw. Filme von der Kamera, in das angelegte Verzeichnis verschieben.
# 4. ein Bild-Betrachtunsprogramm mit dem Zielverzeichnis starten
# 5. Wenn alle verschobenen Bilder Filme gelöscht werden, das heist das Verzeichnis wider leer ist
# wird das Verzeichnis wider gelöscht.
# Konfiguration
#quell und zielverzeichnisse anpassen
#====================================
kamera_bild_wurzel_verzeichnis="dcim"
kamera_bildverzeichnis="100media"
ziel_verzeichnis="jpeg_avi_karl"
. output_format.sh
. find_os.sh
. find_usb_path.sh
parameter_1="${1}"
datum=`date +%Y.%m.%d`
datum_erweitert=`date +%Y.%m.%d.%H.%M`
clear
make_date_dir(){
if test -d "${maxtor_usb}/${datum}"; then
echo -e "${red}${maxtor_usb}/${datum}${ende1}${green} bereits angelegt${ende1}"
if test -d "${maxtor_usb}/${datum_erweitert}"; then
echo -e "${red}${maxtor_usb}/${datum_erweitert}${ende1}${green} bereits angelegt${ende1}"
else
echo -e "${red}${maxtor_usb}/${datum_erweitert}${ende1} ${green}wird angelegt${ende}"
mkdir "${maxtor_usb}/${datum_erweitert}"
fi
else
mkdir "${maxtor_usb}/${datum}"
fi
}
move_media(){
dig_pfad="${digicam_usb}/*.*"
if test -d "${maxtor_usb}/${datum_erweitert}"; then
mv -v ${dig_pfad} ${maxtor_usb}/${datum_erweitert}
${iview_app} "${maxtor_usb}//${datum_erweitert}//"
else
mv -v ${dig_pfad} ${maxtor_usb}/${datum}
${iview_app} "${maxtor_usb}//${datum}//"
fi
}
kamera_leer(){
if test `ls ${digicam_usb} -a|wc -l` -eq 2; then
echo -e "${red}keine Daten auf ${ende1}${digicam_usb}\n"
find ${maxtor_usb} -depth -type d -exec rmdir {} \; 2>/dev/null
else
echo -e "${red}Daten auf ${ende1}${digicam_usb} ${red}werden verschoben${ende1}"
move_media
fi
}
if test -d "${parameter_1}"; then
maxtor_usb="${parameter_1}"
echo -e "Zielverzeichnis:${red}${maxtor_usb}${ende1}"
else
drive_directory="${ziel_verzeichnis}"
find_usb_path
maxtor_usb="${usb_path}"
fi
drive_directory="${kamera_bild_wurzel_verzeichnis}"
find_usb_path
digicam_usb="${usb_path}/${kamera_bildverzeichnis}"
make_date_dir
kamera_leer
Ich würde mich über rege Benutzung des Scripts freuen, und natürlich auch über Verbesserungen, bzw Verbesserungsvorschläge. ;-)
zurück