20.04.2014, 08:02 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

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 werden 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 das 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 wieder leer ist
#		wird das Verzeichnis wieder 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
XML Revisions of $tag
Seiten-History :: Letzter Editor : Zatuffli :: Eigentümer : LastWeb ::
Powered by pnWikka 1.0
 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.