• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Frage zu Shellscript [USB-Stick Sicherung aka Check`n`Back]:

Hallo!

Ich möchte meinen USB Stick sichern;

Dazu habe ich ein Script gebastelt und wollte fragen, ob das im allgemeinen als sinnvoll betrachtet werden kann?

Dann habe ich festgestellt:
Der USB Stick hat ~4 GB. Die Sicherung allerdings fällt ca mit 1,3 GB aus.

Weiss jemand warum, und wird ein recovery funktionieren? Der USB Stick ist normalerweise bootbar und schwer gepflegt. Ich möchte einen Versuch nicht riskieren, bevor ich weiss ob das so überhaupt funktionieren kann -->

Deswegen bitte ich euch darum, dass anzusehen und mir Tipps zu geben.

Vielen Dank!

Hier das Script:
Code:
#!/bin/sh
# Debugschalter:
#set -x
# This Script is intended to backup a special USB-Stick;
# please use the variables below to position the Backup
# and for identifying the unique device;
device="/dev/sdc1";
path="/home/disk/Desktop/Portable_Backup";
filename="usbstick_";
connected="$( fdisk -l | grep 0x00035bd5 )";
stickid="Disk identifier: 0x00035bd5"
# Let's GO! Check'n'Back!
echo "Prüfe ob der USB Stick mit dem System verbunden ist:"
if [ "$connected" = "$stickid" ]; then
echo "Der Stick ist angeschlossen! [OK]"
echo "
		## Sichere USB Stick! ($device) ##
"
dd if=$device | gzip > $path/$filename`date +%d-%m-%Y`.gz
echo "
Sicherung von $device mit $stickid 
als $filename`date +%d-%m-%Y`.gz"
echo "in $path Abgeschlossen!"
else
echo "Die Sicherung kann nicht durchgeführt werden!" & exit 0;
fi;
# /EOF

Die Wiederherstellung wollte ich via folgendem Befehl dann später versuchen:
# gzip -dc /path/to/image.gz | dd of=/dev/hdx


Gruß

R
 
Das script ist ganz gut nachvollziehbar.
Kann es auch schonmal vorkommen, dass mehrere Sticks angeklemmt sind ?
Ich denke dann könnte der Parameter /dev/sdc1 zu einer Fehlerquelle werden, da Du vielleicht dann den falschen Stick sicherst.

Hast Du bezüglich der Abbrüche mal mit dem dd-Parameter 'noerror' versucht, ob er weiterläuft ?
Vielleicht hat der Stick an einer Stelle einen Lesefehler erzeugt und dd zum Abbruch veranlasst.
 
Hi!

Danke! Ja das ist tatsächlich der Fall! Das könnte passieren.

Weitere Überlegung dazu ist eben, dass sich auch der Laufwerksbuchstabe ändern könnte. Also angenommen ein händischer Mount schlüge fehl und der PC würde einfach den nächsten logischen einhängepunkt verwenden...

Ich überlege gerade, wie ich das machen könnte, dass er die "Partition" beispielsweise anhand der Ausgabe von fdisk -l automatisch erkennt.

Also abbrechen scheint er nicht. Aber die Dateigröße am Ende ist halt nur 1,3 GB. Was ich nicht so schlimm fände.
Vorrausgesetzt ich könnte sicher sein, dass eine Wiederherstellung wieder in einem bootbaren USB-Stick mit allem drum und dran, wie er halt ist resultiert.
Mit portabler C++ Entwicklungsumgebung usw..
Allein die moka5 SuSE Installation hat nen ganzen Tag in Anspruch genommen...
Und er ist ein bootbares Installationsmedium.
Der ist mir fast heilig weil so viel Zeit drinsteckt -- das ist der Grund warum ich eine Sicherung machen möchte.
Weiter habe ich mehrere Portabel Applikationen wie openoffice und Pidgin darauf, die schon sehr personalisiert sind.

Hier mal die Konsoleausgabe vom aktuellen Script wie oben im text:
Code:
wild-thing:/home/disk # sh Desktop/Portable_Backup/USB-Stick-Back.sh
Prüfe ob der USB Stick mit dem System verbunden ist:
Der Stick ist angeschlossen! [OK]

                ## Sichere USB Stick! (/dev/sdc1) ##

8028096+0 Datensätze ein
8028096+0 Datensätze aus
4110385152 Bytes (4,1 GB) kopiert, 248,282 s, 16,6 MB/s

Sicherung von /dev/sdc1 mit Disk identifier: 0x00035bd5
als usbstick_06-05-2008.gz
in /home/disk/Desktop/Portable_Backup Abgeschlossen!
Daraus ersehe ich, dass scheinbar schon die 4,1 GB verarbeitet wurden.
Code:
wild-thing:/home/disk # ls -alh /home/disk/Desktop/Portable_Backup/usbstick_0*
-rw-r--r-- 1 root root 1,4G  5. Mai 21:41 /home/disk/Desktop/Portable_Backup/usbstick_05-05-2008.gz
-rw-r--r-- 1 root root 1,4G  6. Mai 18:39 /home/disk/Desktop/Portable_Backup/usbstick_06-05-2008.gz
Laut "du" hat der Stick wenn ich den einhängepunkt berechnen lasse:
wild-thing:/home/disk # du -hs /media/DATA/
2,4G /media/DATA/
Das währe immernoch 1 GiG mehr, als die resultierende Sicherungsdatei hat.
Ist der komprimierungsgrad derart hoch?

Danke für die Hilfe :)

Gruß

R
 
Hi!
Wenn der Stick nach dem Recover bootbar bleiben soll,dann wärs sicherlich sinnvoller das RAW-Device statt der Partition allein zu sichern, denn dann wird auch der MBR des Sticks mitgesichert. Betreffs dem Device-Mischmasch wenn mehrere Sticks am Werk sind: Wie wärs mit einem Label für die Partition und dnn /dev/disk/by-label/<dein Sticklabel> zu nehmen statt /dev/sdc1 da so kein vertun mehr so einfach drin ist (es sei denn man labelt alle Sticks gleich)?
Mit tune2fs kann man für ext2/ext3 Dateisysteme ein Label vergeben, für RAW-Devices bietet sich eher /dev/disk/by-id/<deine Stickdeviceid> statt /dev/sdc an.

Bis denne,
Tom
 
re# Tomcat :)

Sehr gute Idee, das trifft es fast perfekt!

Code:
wild-thing:/home/disk # ls /dev/disk/by-label/
Data  DATA  Linux  SUSE\x20I386  Vista

Das währe dann entsprechend 'DATA'

Wie sähe die Kommandozeile für eine Sicherung aus? Kann ich das genauso mit DD abgreifen?
Momentan so:
Code:
device="/dev/sdc1";
dd if=$device | gzip > $path/$filename`date +%d-%m-%Y`.gz

Die Frage beantworte ich mir mal damit (ausnahmsweise):
http://de.wikipedia.org/wiki/Raw_Device

Gruß

R
 
Entsprechend habe ich das Script wie folgt umgestaltet.

Eine Rücksicherung würde dann so erfolgen?:
# gzip -dc /path/to/image.gz | dd of=/dev/disk/by-uuid/50BC-DDC0
Das Script sieht jetzt so aus und prüft auch die Dateigröße und gibt die UUID sowie die Partition anhand von Abgreifen und Benschneidens der Ausgabe von ls -- aus; :::
Code:
#!/bin/sh
# Debugschalter:
#set -x
# This Script is intended to backup a special USB-Stick;
# please use the variables below to position the Backup
# and for identifying the unique device;
device="50BC-DDC0";
path="/home/disk/Desktop/Portable_Backup";
filename="usbstick_";
connected="$( fdisk -l | grep 0x00035bd5 )";
connected2="$( ls -al /dev/disk/by-uuid/50BC-DDC0 | awk -F \>  '{print $2}' )";
stickid="Disk identifier: 0x00035bd5"
sticksize="$( du -hs $path/$filename* | awk -F \  '{print $1}' )";
stickmax="$( du -s /home/disk/Desktop/Portable_Backup/usbstick_* | awk -F \  '{print $1}' )"
warn=3691120
# Let's GO! Check'n'Back!
echo "
	#############################
	## Let's GO! Check'n'Back! ##
	#############################
"
echo "## Prüfe ob der USB Stick (Portable) mit dem System verbunden ist: ##"
if [ "$connected" = "$stickid" ]; then
echo "
-->	Der Stick ist angeschlossen! [OK]"
echo "
## Sichere USB-Stick! ($connected2 ) ##
"
dd if=/dev/disk/by-uuid/$device | gzip > $path/$filename`date +%d-%m-%Y`.gz
echo "
Sicherung von$connected2 mit $stickid 
und uuid $device
in $path"
echo "als $filename`date +%d-%m-%Y`.gz Abgeschlossen!"
echo "Die Datei ist $sticksize groß!"
# Ist wahr, wenn die Erste Zahl kleiner
# ist als die Zweite lt =lower than;
# Prüft ob der Stick der Sicherung nach weniger als 90 % Belegt ist:
	if [ $stickmax -lt $warn ]; then
		echo "";
	else
		echo "WARNUNG: Der Sicherung nach ist der Stick zu mehr als 90 % belegt!";
	fi;
else
echo "
-->	Die Sicherung von 'Portable' kann nicht durchgeführt werden,
	da der Stick nicht mit dem Computer verbunden ist! [END]
" & exit 0;
fi;
# /EOF
Hier die Ausgabe und was mir sorgen macht ist abermals die Dateigröße::
Code:
wild-thing:/dev/disk/by-uuid # sh /home/disk/Desktop/Portable_Backup/USB-Stick-Back.sh

        #############################
        ## Let's GO! Check'n'Back! ##
        #############################

## Prüfe ob der USB Stick (Portable) mit dem System verbunden ist: ##

-->     Der Stick ist angeschlossen! [OK]

## Sichere USB-Stick! ( ../../sdc1 ) ##

8028096+0 Datensätze ein
8028096+0 Datensätze aus
4110385152 Bytes (4,1 GB) kopiert, 258,83 s, 15,9 MB/s

Sicherung von ../../sdc1 mit Disk identifier: 0x00035bd5
und uuid 50BC-DDC0
in /home/disk/Desktop/Portable_Backup
als usbstick_06-05-2008.gz Abgeschlossen!
Die Datei ist 1,4G groß!
Was passiert da? Mach ich was falsch?

Gruß

R
 
Oben