Dedies-Board (https://www.dedies-board.de/wbb2/index.php)
- Linux (https://www.dedies-board.de/wbb2/board.php?boardid=30)
-- FAQs (https://www.dedies-board.de/wbb2/board.php?boardid=32)
--- Backup für Arme (https://www.dedies-board.de/wbb2/thread.php?threadid=2700)


Geschrieben von Haui am 12.09.2010 um 18:01:

  Backup für Arme

Da ich in den letzte Wochen 2 mal in die Verlegenheit kam, wichtige Daten aus einer Sicherung wiederherstellen zu müssen (rm -rf .ssh ist idR. einfach keine gute Idee....), hab ich mir gedacht, dass ich mal kurz was zu meiner relativ unprofessionellen, aber für mich ausreichenden Backup-Lösung schreiben könnte. Unprofessionell deshalb, weil es sich prinzipiell nur um eine reine Kopie wichtiger Daten handelt und es nicht möglich ist mehrere Snapshots verschiedener Zeitpunkte zu verwalten. Wer soetwas will, sollte sich z.B. mal rsnapshot etwas genauer ansehen.

Meine Lösung besteht aus einem kurzen (für diese Posting noch mehr gekürzten) Bash-Skript, das die Verzeichnisse /home/haui sowie /music auf eine externe Platte sichert. Da das Ganze mit rsync erledigt wird, handelt es sich um ein inkrementelles Backup.
Achtung: Das Skript muss vor der Verwendung angepasst werden, falls etwas unklar ist lieber nachfragen als eine böse Überraschung zu erleben!

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
#!/bin/bash

#UUID der Backuppartition, muss geändert werden (-> blkid /dev/sdXX)
UUID=ABCDEF
#Einhängepunkt der Backuppartition, muss ggf. geändert werden
MOUNTPOINT=/mnt/extern
#wird unten gesetzt. Falls aktiviert, wird rsync Änderungen
#nur auflisten, diese aber nicht durchführen 
DRYRUN=""

[[ $UUID = ABCDEF ]] && { echo "Unmodified script...quitting"; exit; }

if [[ $# -eq 0 ]]
then
	echo "Argument required"
	echo "valid arguments are: home music all"
	echo "valid command switches are: -n (dry-run)"
	exit
fi

	#Nachschauen ob unsere Partition vorhanden ist
	if ! [[ -e /dev/disk/by-uuid/$UUID ]]
	then
		echo "Device not mounted....quitting"
		exit 1
	fi
	#wenn die Partition noch nicht eingebunden ist
	if ! df | grep -q "$MOUNTPOINT"
	then
		#versuche sie einzubinden
		if ! mount "$MOUNTPOINT"
		then
			echo "Failed to mount $MOUNTPOINT"
			exit 1
		fi
		echo "Mounted $MOUNTPOINT, press Enter to continue"
		read l;
	fi
	#hier wird überprüft, ob die korrekte Partition nach in /mnt/extern eingebunden ist
	DEV=$(df "$MOUNTPOINT"/ | tail -1 | awk '{print $1}')
	if [[ $(/sbin/blkid $DEV | sed -r 's#^.*UUID="([^"]+)".*#\1#') != $UUID ]]
	then
		echo "Wrong disk"
		echo "$DEV"
		exit 1
	fi
	#selbsterlärend
	if [[ $USER != "haui" ]]
	then
		echo "wrong user..."
		exit 1
	fi

	echo ""
	echo "Everything seems to be ok, type Y to proceed"
	read line
	if [ $line != "y" ] && [ $line != "Y" ]
		then
		exit
	fi

	#dry-run aktivieren oder nicht?
	for arg; do
		[[ $arg = "-n" ]] && DRYRUN="--dry-run" && echo "DRYRUN"
	done

	#hier findet das eigentlich synchronisieren der Verzeichnisse statt
	#--delete heißt, dass Dateien die beispielsweise im Home-Verzeichnis gelöscht werden,
	#beim nächsten Durchlauf des Skripts auch im Backup gelöscht werden.
	#mit exclude lassen sich einzelnen Dateien/Ordner vom Backup ausschließen
	#GENAU anschauen und ggf. anpassen
	for arg
	do
		if [ "$arg" = "home" ] || [ "$arg" = "all" ]
		then 
			rsync $DRYRUN --delete --exclude=.mozilla/firefox/ABC123.default/Cache \
				 --exclude=.macromedia --exclude=.opera/cache \
				-av /home/haui/ "$MOUNTPOINT"/backup/haui
		fi
		if [ "$arg" = "music" ] || [ "$arg" = "all" ]
		then
			#/music
			rsync $DRYRUN --progress --stats -av  /music/  "$MOUNTPOINT"/backup/music
		
		fi
	done



Geschrieben von Vimes am 13.09.2010 um 22:30:

  RE: Backup für Arme

@Haui:

Danke! Grandios! Ich nutze doch auch rsync für meine Backups.
Morgen, wenn mein Schädel nicht mehr brummt [1], schaue ich mir in Ruhe Dein Skript an, da kann ich, das sehe ich auf einen Blick, jede Menge von lernen. yes

Jetzt entspanne ich mich mit einem 10-jährigen Laphroiag.

Nochmal: Danke!

Beste Grüße,
Vimes

[1] Keine Ahnung, wo das her kommt, aber ich weiß, was ich dagegen tue. Petzauge