franzmann
Goto Top

Datensicherung per Shellskript

Hey,
benutze Linux (SLES 10.2) und habe dieses Shell-Skript im Netz gefunden und es erfüllt auch genau meine Anforderungen.
Leider bekomme ich folgende Meldung wenn ich es ausführe:

line 28: syntax error near unexpected token '|'
line 28: ' $FIND $BACKUPFILES -mtime $AGE -type f -exec $TAR $TAROPTIONS {} \\; | $GZIP | $SSH $REMOTEUSER\\@$REMOTE "cat > $REMOTEDIR$REMOTEFILE" '

########## Configuration ############
BACKUPFILES="/etc/ /home/ /usr/ /var/" # zu sichernde Verzeichnisse  
REMOTE="192.168.1.100"   # Rechner auf den gesichert wird  
REMOTEUSER="backup"                          # User, auf den via ssh ohne Passwort zugegriffen wird  
REMOTEDIR="/home/backup/"  # Backup-Verzeichnis auf Remote-Rechner  
AGE="-1"     # -1 = Nicht aelter als 24 Stunden, -2 = 48 ...  
MAILTO="./backup.mail"   # Mailadressen, die im Error-Fall Mail erhalten  
SUBJECT="Backup_fehlgeschlagen!"        # im Subject kein Leerzeichen!  
ERROR="./error.txt"                          # Text, der im Error-Fall versandt wird  

DATE=`/bin/date +%Y%m%d`  # Datum im Format YearMonthDay
HOST=`/bin/hostname`

TAR=/bin/tar
FIND=/usr/bin/find
TAROPTIONS="c"  
SSH=/usr/bin/ssh
CAT=/bin/cat
GZIP=/usr/bin/gzip
MAIL=/usr/bin/mail

REMOTEFILE="incremental_$HOST".$DATE."tgz" # Dateiname der Backup-Datei  
CHECK_REMOTE=`ping -c1 $REMOTE | grep packet | awk '{print $4}'` # gibt 1 (online) oder 0 (offline) zurueck  
#####################################

if [ $CHECK_REMOTE == 1 ]; then
 $FIND $BACKUPFILES -mtime $AGE -type f -exec $TAR $TAROPTIONS {} \\; | $GZIP | $SSH $REMOTEUSER\\@$REMOTE "cat > $REMOTEDIR$REMOTEFILE"  
else
 $CAT $MAILTO | while read line
        do
                $MAIL $line -s $SUBJECT < $ERROR
        done
fi

Jemand ne Idee...
thx

Content-ID: 72762

Url: https://administrator.de/forum/datensicherung-per-shellskript-72762.html

Ausgedruckt am: 24.12.2024 um 13:12 Uhr

Franzmann
Franzmann 07.11.2007 um 09:05:12 Uhr
Goto Top
Der 'find' Befehl muss mit einem Semicolon ';' beendet werden.
In den Shells muss das Semicolon 'escaped' werden, d.h., am Ende des Befehls steht '\;'.
Hier stehen dort zwei \\. Also \\ durch einen Backslash ersetzt und fertig face-smile
Franzmann
Franzmann 07.11.2007 um 15:08:19 Uhr
Goto Top
Wenn ich das Skript nun ausführe bekomme icch folgende Meldung:
/bin/tar: Removing leading `/' from member names
Password:

Was bedeutet das "...Removing leading `/' from member names..." ?
Ist das ein Fehler ?
Des Weiteren, warum werde ich nach einem Passwort gefragt ?
1. Habe Autorisierung per ssh konfiguriert und getestet.
Also kann das gar nicht sein ?!
2. Wenn ich dennoch von Hand das Passwort eingebe, nimmt er es trotzdem nicht ?!
:hilfe2: Irgendwie verwirrt mich das...
Biber
Biber 13.11.2007 um 19:53:27 Uhr
Goto Top
Moin Franzmann,

sorry, bin verwirrt, weil Dein Beitrag auf "gelöst" stand/steht und ihn wahrscheinlich deshalb keiner beachtet hat.

Sind die Fragen noch offen oder selbst gelöst oder sowohl als auch??

Grüße
Biber
Franzmann
Franzmann 14.11.2007 um 12:59:51 Uhr
Goto Top
Hey,
also das Problem ist nachträglich aufgetreten.
Ist aber nicht mehr wichtig.
Hab es anderweitig gelöst.
Danke