Mittwoch, 8. Februar 2012, 06:16

Du bist nicht angemeldet.



[gelöst] Backup per Cron

Hutchef

hat hier 2. Wohnsitz.

  • »Hutchef« ist der Autor dieses Themas

Beiträge: 252

Ubuntu: 11.04

Kernel: aus der Paketverwaltung

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

1

Freitag, 4. September 2009, 09:34

Backup per Cron

Hi zusammen,

ich stehe gerade voll auf dem Schlauch. Ich habe ein Backupscript gebaut und will das per Cron jeden Abend ausführen, aber nur wenn ich bei mir zu Hause im LAN bin. Klingt alles total einfach. Problem ist, führe ich das Script via Konsole aus, funktioniert es wunderbar. Fürht Cron es aus, geht etwas schief.
Hier mal mein Script (gekürzte Fassung, alles Datein und Ordner weggelassen bis auf ein Beispiel).

Quellcode

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
#! /bin/bash
############### variables

# lokale IP auslesen
IP_LOKAL=$(ifconfig  | grep 'inet Adresse:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
IP_BACKUP="192.168.150.100"

touch /home/hutchef/Desktop/ip.txt                   	# Kontrolle
echo $IP_LOKAL > /home/hutchef/Desktop/ip.txt 	# Kontrolle

# user name
USER_NAME="hutchef"
#########################

# check 
if [ $IP_LOKAL = $IP_BACKUP ]; then
    	#echo "IP ist gleich und das Backup kann gestartet werden"

touch /home/hutchef/Desktop/ip_drin.txt                        	# Kontrolle
echo $IP_LOKAL > /home/hutchef/Desktop/ip_drin.txt      	# Kontrolle

rsync -aP /home/$USER_NAME/.ssh/ /home/$USER_NAME/backup/ssh/

    	else echo ""   # "IP ist nicht gleich - keine Aktion"

fi


Bei der Ausführung auf Konsole werden beide Datein mit korrektem Inhalt auf dem Desktop angelegt. Tut es Cron, wird lediglich die erste Datei angelegt, aber nicht mit Inhalt gefüllt -> ich folgere daraus, das bei Cron die lokale IP nicht ausgelesen wird, nichts als Inhalt in die Datei geschrieben wird und anschließend in den else Zweig gesprungen wird.

Warum?

Wer einen Tipp hat, immer her damit.
mfg Hutchef

Es ist besser für das, was man ist, gehasst,
als für das, was man nicht ist, geliebt zu werden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Hutchef« (4. September 2009, 17:47)


basslord

Ubuntufreund

Beiträge: 2 651

Ubuntu: 11.10

Kernel: 3.0.0-12

Desktop: KDE

Architektur: 64-bit

  • Private Nachricht senden

2

Freitag, 4. September 2009, 16:23

Hi,

erste Stolperfalle: cron hat andere Umgebungsvariablen als der aufrufende User. Das heißt, auch $PATH ist verschieden, er enthält lediglich /bin und /usr/bin.
Dann kommt dein Skript irgendwo bei den Pipes ins Schleudern. Wo, kann ich gerade nicht sagen. Aber etwas umgeschrieben funktioniert das folgende Skript.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash 
############### variables

# lokale IP auslesen
IP_LOKAL=$(/sbin/ifconfig  | egrep -m1 -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | head -n1)
IP_BACKUP="192.168.150.100"

echo $IP_LOKAL > /home/hutchef/Desktop/ip.txt   # Kontrolle

# user name
USER_NAME="hutchef" # hier kannst du auch $LOGNAME auslesen


#########################

# check 
if [ "$IP_LOKAL" == "$IP_BACKUP" ]; then
  #echo "IP ist gleich und das Backup kann gestartet werden"
  echo $IP_LOKAL > /home/hutchef/Desktop/ip_drin.txt            # Kontrolle
  rsync -aP /home/$USER_NAME/.ssh/ /home/$USER_NAME/backup/ssh/
else 
  echo ""   # "IP ist nicht gleich - keine Aktion"
fi


Gruß
Rodge
"Ohne Musik wäre das Leben ein Irrtum." - Friedrich Nietzsche

Hutchef

hat hier 2. Wohnsitz.

  • »Hutchef« ist der Autor dieses Themas

Beiträge: 252

Ubuntu: 11.04

Kernel: aus der Paketverwaltung

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

3

Freitag, 4. September 2009, 17:46

Hi,

danke :)

Hatte auch noch weiter recherchiert und daher mal $PATH aus der /etc/crontab kopiert und erweitert, nachdem er dort auch nichts tat.

Quellcode

1
2
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/hutchef/daten_laptop/scripts


Zum Schluß hatte ich auch die Vermutung, das der Befehl mit den Pipes von Cron nicht "kapiert" wird... und dann war Feierabend ^^


Vielen Dank :thumbsup:
mfg Hutchef

Es ist besser für das, was man ist, gehasst,
als für das, was man nicht ist, geliebt zu werden.