Backup Script Problem

So sollte es jetzt funktionieren:
Code:
#!/bin/sh

SUFFIX="tar.gz"
DATE=`date +"%d.%m.%Y"`
DELDATE=`date +"%d.%m.%Y" -d "21days ago"`

for d in `find /var/www/ -type d -mindepth 1 -maxdepth 1 ! \( -iname "html" -o -iname "webalizer" -o -iname "web_sqldumper" -o -iname "lost+found" \) -print0 | xargs -0`
do
    cd /var/www

    FULLNAME="${DATE}.${d}.${SUFFIX}"
    tar czfv ${FULLNAME} ${d}/htdocs
    DELFILE="${DELDATE}.${d}.${SUFFIX}"

    lftp << EOF
    set ftp:ssl-auth TLS
    set ssl:verify-certificate no
    open ftp://10.10.10.12:21
    user username passwort
    cd home
    rm ${DELFILE}
    put ${FULLNAME}
    exit
EOF

    rm -f ${FULLNAME}
done
Oder verwendest Du eine andere Shell als die bash?
 
hab auch bash im script^^
bekomme nun nachdem ich script nach links gezogen habe den Fehler beim Ausführen udn es wird keine tar erstellt
Code:
find: Warnung: Sie haben die Option -mindepth nach einem Argument -type angegeben, das keine Option ist, weil Optionen nicht positional sind (-mindepth beeinflusst sowohl Tests davor als auch jene danach). Bitte geben Sie Optionen vor anderen Argumenten an.
find: Warnung: Sie haben die Option -maxdepth nach einem Argument -type angegeben, das keine Option ist, weil Optionen nicht positional sind (-maxdepth beeinflusst sowohl Tests davor als auch jene danach). Bitte geben Sie Optionen vor anderen Argumenten an.
tar: Entferne führende »/« von Elementnamen
rm: Zugriff nicht möglich:550 10.05.2022./var/www/web309.tar.gz: permission denied.
put: /var/www/30.05.2022./var/www/web309.tar.gz: Datei oder Verzeichnis nicht gefunden
tar: Entferne führende »/« von Elementnamen
tar (child): 30.05.2022./var/www/web89.tar.gz: Funktion open fehlgeschlagen: Datei oder Verzeichnis nicht gefunden
tar (child): Error is not recoverable: exiting now
 
Ach je, GNU mal wieder :(
Dann halt so:
Code:
for d in `find /var/www/ -mindepth 1 -maxdepth 1 -type d ! \( -iname "html" -o -iname "webalizer" -o -iname "web_sqldumper" -o -iname "lost+found" \) -print0 | xargs -0`
 
ok nun kommt nur noch der Fehler, er nimmt den ganzen Pfad als Datei, das scheint hier den Fehler auszulösen... ?
Code:
tar: Entferne führende »/« von Elementnamen
tar (child): 30.05.2022./var/www/web58.tar.gz: Funktion open fehlgeschlagen: Datei oder Verzeichnis nicht gefunden
tar (child): Error is not recoverable: exiting now
tar: 30.05.2022./var/www/web58.tar.gz: Funktion write fehlgeschlagen: Datenübergabe unterbrochen (broken pipe)
tar: Child returned status 2
tar: Error is not recoverable: exiting now
rm: Zugriff nicht möglich:550 10.05.2022./var/www/web58.tar.gz: permission denied.
put: /var/www/30.05.2022./var/www/web58.tar.gz: Datei oder Verzeichnis nicht gefunden
tar: Entferne führende »/« von Elementnamen
tar (child): 30.05.2022./var/www/web309.tar.gz: Funktion open fehlgeschlagen: Datei oder Verzeichnis nicht gefunden
tar (child): Error is not recoverable: exiting now
 
Last edited:
OK, hab noch ein basename eingebaut um die d-Variable zu bereinigen, dadurch sollte tar nun durchlaufen.
Zusätzlich habe ich das tar nach /tmp/ gelegt, da es sauberer ist und weitere potentielle Probleme vermeidet.
Code:
#!/bin/sh

SUFFIX="tar.gz"
DATE=`date +"%d.%m.%Y"`
DELDATE=`date +"%d.%m.%Y" -d "21days ago"`

for d in `find /var/www/ -mindepth 1 -maxdepth 1 -type d ! \( -iname "html" -o -iname "webalizer" -o -iname "web_sqldumper" -o -iname "lost+found" \) -print0 | xargs -0 basename`
do
    cd /var/www

    FULLNAME="${DATE}.${d}.${SUFFIX}"
    tar czfv /tmp/${FULLNAME} ${d}/htdocs
    DELFILE="${DELDATE}.${d}.${SUFFIX}"

    lftp << EOF
    set ftp:ssl-auth TLS
    set ssl:verify-certificate no
    open ftp://10.10.10.12:21
    user username passwort
    cd home
    rm ${DELFILE}
    put /tmp/${FULLNAME}
    exit
EOF

    rm -f /tmp/${FULLNAME}
done
Ich hoffe nun ist es fehlerfrei und läuft wunschgemäss ;)
 
er meldet:
basename: zusätzlicher Operand »/var/www/web89«
»basename --help« liefert weitere Informationen.
und hört auf.

PS: für was in /tmp`? der soll in /var/www bleiben weil das eine große partition ist^^ wenn in /var/www/tmp müsste man die ja erst erstellen
 
Last edited:
Langsam hasse ich Linux/GNU, unter FreeBSD funktioniert es problemlos :(

Also dann halt altmodisch:
Code:
#!/bin/sh

SUFFIX="tar.gz"
DATE=`date +"%d.%m.%Y"`
DELDATE=`date +"%d.%m.%Y" -d "21days ago"`

cd /var/www

for dir in `find . -mindepth 1 -maxdepth 1 -type d ! \( -iname "html" -o -iname "webalizer" -o -iname "web_sqldumper" -o -iname "lost+found" \) -print0 | xargs -0`
do
    d=`basename ${dir}`

    FULLNAME="${DATE}.${d}.${SUFFIX}"
    tar czfv /tmp/${FULLNAME} ./${d}/htdocs
    DELFILE="${DELDATE}.${d}.${SUFFIX}"

    lftp << EOF
    set ftp:ssl-auth TLS
    set ssl:verify-certificate no
    open ftp://10.10.10.12:21
    user username passwort
    cd home
    rm ${DELFILE}
    put /tmp/${FULLNAME}
    exit
EOF

    rm -f /tmp/${FULLNAME}
done
 
@Joa User, klappt leider noch nicht

tar: ./.local/htdocs: Funktion stat fehlgeschlagen: Datei oder Verzeichnis nicht gefunden
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler
rm: Zugriff nicht möglich:550 10.05.2022..local.tar.gz: No such file or directory.
tar: ./.gnupg/htdocs: Funktion stat fehlgeschlagen: Datei oder Verzeichnis nicht gefunden
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler
 
Dann musst Du halt das hardcodierte /htdocs wieder entfernen.

Ohne die betreffende Verzeichnisstruktur zu kennen, ist es halt zeitraubend/fehleranfällig ein passendes Script aus der Hüfte zu schiessen...
 
Kann es sein das der Fehler ganz easy der ist, dass du hinter find nen . gemacht hast statt /var/www ? weil damit scheint es zu klappen^^
Vielen Dank auf jeden Fall für deine Hilfe, das hat mir weiter geholfen.
 
Last edited:
Hallo, kleine Frage noch dazu. Am Ende das Löschen
Code:
EOF
    rm -f ${FULLNAME}
done
nimmt er nicht, die tar.gz-Files werden also nicht gelöscht. Ist durch EOF der Fullname ggf. verloren gegangen?
 
Was heißt: nimmt er nicht? Welche Fehlermeldung?
Was steht in ${FULLNAME}, gib es mal mit echo aus.
Code:
echo "DEBUG: ${FULLNAME}";
rm -f "${FULLNAME}";
 
Hi er gibt aus beim Debug Echo:
DEBUG: 06.06.2022.web58.tar.gz
Also richtiger Name usw. Er löscht es aber nicht. Danach kommt kein weiterer Fehler.
 
Back
Top