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
|