Backup Script Problem

Ich sehe, dass Du im Beitrag #58 im Vergleich zu dem vorher geposteten Code eine Änderung drin hast, die vermutlich der Grund für das fehlerhafte Verhalten ist.

(Mein Motto ist hier Hilfe zur Selbsthilfe bzw. Anregung zu Eigeninitiative. Deswegen will ich Dir das Erfolgserlebenis hier nicht nehmen.)
 
Last edited:
Hallo, ja er speichert es in /var/www nicht in /tmp, Siehe Verlauf des Tickets ;) daran liegt es aber ncith denn wenn ich /var/www/ davor schreibe passiert auch nichts. Daher wäre ich über eine weitere Info dankbar.
 
@ITWK Wie wäre es, wenn du mal dein ganze Shellprogramm hier mit Code-Formatierung [Drei-Punkte-Button (ganz rechts) → </>] postest?
Wo du überall was geändert hast, kann sonst niemand mehr ohne Aufwand nachvollziehen.
 
Hallo, gerne anbei das aktuelle Script:
Code:
#!/bin/sh

SUFFIX="tar.gz"
DATE=`date +"%d.%m.%Y"`
# taegliche sicherung: 7days ago - 7 backups rueckhalt
# woechentliche sicherung: 21days ago - 3 backups rueckhalt
DELDATE=`date +"%d.%m.%Y" -d "21days ago"`

#Finde in /path/to/ nur Verzeichnisse (-type d) die min/max (-mindepth 1 -maxdepth 1) eine Ebene tiefer liegen und
#nicht foo/Foo/FOo/... oder bar/bAr/baR/... (! \( -iname "foo" -o -iname "bar" \)) heissen und
#liste sie in einer einzelnen Zeile mit \0 als Trenner auf (-print0) und ersetze die \0 durch ein Leerzeichen (| xargs -0).
# base bereinigt den pfad
for dir in `find /var/www/ -mindepth 1 -maxdepth 1 -type d ! \( -iname "html" -o -iname "webalizer" -o -iname "web_sqldumper" -o -iname "lost+found" -o -iname ".well-known" \) -print0 | $
do

        d=`basename ${dir}`

        #verzeichnis wo das temporaere backup vor dem ftp transfer ertellt wird
        cd /var/www

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

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

# debug-ausgabe ob der fullname stimmt
#       echo "DEBUG: ${FULLNAME}";
#       rm -f "${FULLNAME}";

#      rm -f /var/www/{$FULLNAME}
        rm -f {$FULLNAME}
done
 
Da schrieb ich es extra richtig hin und dann macht es ITWK trotzdem falsch.
Ich warte schon auf das nächste riesige Problem, wenn ein Skript viel kaputt macht oder zum Kapern dienen kann.

@ITWK Du musst endlich mal dir Zeit nehmen und bash lernen. Das geht auch Zuhause auf einem Linux in einer Virtuellen Maschine (z.B. Virtualbox, VMware Workstation Player o.ä.).
Ein bisschen mehr Lernwille und Zeitaufwand, und du kannst auch mehr und läufst nicht in solche Anfängerfehler.

Viel Erfolg zum Lernen!
 
Die öffnende geschweifte Klammer ist an der falschen Position ;)

Es ermuntert IMHO nicht besonders zu Eigeninitiative, wenn man hier die Lösung konsequent ohne eigenen Arbeitsaufwand serviert bekommt, wie mehrfach in diesem Thread.

Das irritiert mich vor allem bei Menschen, die in anderen Bereichen gefühlt fast schon zu physischer Aggression greifen, wenn jemand nur den Eindruck erweckt, die Dokumentation nicht gelesen zu haben. (Das ist natürlich nicht wörtlich zu verstehen).

Das soll keine Kritik sein, dass das falsch ist. Es geht mir darum, dass ich mir das wünsche, Menschen dabei zu unterstützen das selbst zu lernen.

GwenDragon said:
Da schrieb ich es extra richtig hin und dann macht es ITWK trotzdem falsch.

Soweit so normal. Blöde Typos passieren mir selbst gelegentlich nochmal. Wenn man dann aber schon mindestens ein Mal so einen Fehler gemacht hat, und >= 30 Minuten danach sucht, dann passiert so etwas so schnell nicht wieder.
 
Last edited:
Es ermuntert IMHO nicht besonders zu Eigeninitiative, wenn man hier die Lösung konsequent ohne eigenen Arbeitsaufwand serviert bekommt, wie mehrfach in diesem Thread.

Das irritiert mich vor allem bei Menschen, die in anderen Bereichen gefühlt fast schon zu physischer Aggression greifen, wenn jemand nur den Eindruck erweckt, die Dokumentation nicht gelesen zu haben. (Das ist natürlich nicht wörtlich zu verstehen).
Im Gegensatz zu den von mir "Zurechtgestutzten", war beim TE hier von Anfang an eine Lernbereitschaft und Eigeninitiative deutlich erkennbar. Das macht halt den entscheidenden Unterschied.

Darüberhinaus waren es bei ihm auch keine Anfängerfehler, sondern noch nicht verstandenes fortgeschritteneres Wissen um effektivere und sicherere Bash-"Programmierung".

Egal, das nächste Mal darfst Du wieder den "Guten" spielen und ich spiele wieder den "Bösen".
Aber vergiss dann nicht zu erklären, warum der * dort im Script böse war...

Tipp für alle Anderen: https://tldp.org/LDP/abs/html/
 
OFF-TOPIC: Das folgende trägt nichts zur Frage dieses Threads bei.

@Joe User: Ja. Wir haben hier einen unterschiedlichen Ansatz. Dabei möchte ich nicht sagen, dass Deiner falsch und meiner richtig ist. Ich will es nur mal schreiben.

Im Gegensatz zu den von mir "Zurechtgestutzten", war beim TE hier von Anfang an eine Lernbereitschaft und Eigeninitiative deutlich erkennbar.

Die sichtbare Eigeninitiative war, dass der TE hier tatsächlich ein paar Codezeilen selbstgeschrieben hat. Anschließend hat er, wenn irgend etwas nicht geht, sofort die Ausgabe im Forum gepostet und hat geschrieben "geht nicht" und "wie mach ich, das es geht?". Er hat die Lösung bekommen und dann hat er beim nächsten Problem wieder genau gleich gehandelt. Das ist nach meinem Verständnis keine Eigeninitiative. Ich möchte dem TE hier Möglichkeiten an die Hand geben, wie er selbst voran kommen kann.

Wenn man sich in dem Fall den Code anschaut, dann findet man schon raus, dass da unten komischerweise {$bla} steht, wo oben noch ${bla} stand. Das sind doch normale Fehler, die man macht. Alleine ein intensiveres beschäftigen mit dem Code fördert IMO das Verständnis davon. Dabei kann man lernen, auf welche verschiedenen Weisen man die Skripte debuggen kann: set -v, Variablenausgabe, logging, ... Das wäre meine nächsten Schritte gewesen.

Ansonsten ist es mir selbst eigentlich egal, wie kacke das Script ist. Es stellt den aktuellen Entwicklungsstand des Schreibers dar und der entwickelt sich mit dem lernen automatisch weiter.

Good Cop / Bad Cop
Mein Haltung hinsichtlich Bad Cop ist, dass ich trotzdem immer versuche freundlich zu sein. Ich gebe nicht unbedingt das, was erbeten wird(Die Lösung), auch wenn der Fragende davon wenig begeistert ist und mich daraufhin beschimpft oder sich beklagt - war hier nicht anders. Ist ok. Jeder ist frei, die Hilfe, so wie ich sie anbiete, nicht zu nutzen.
 
Die öffnende geschweifte Klammer ist an der falschen Position ;)
Hallo und vielen Dank. Das habe ich nicht gesehen. Kam auch nicht als Fehler daher vermutlich mehrfach drüber geschaut. besten Dank nochmals.

PS zu den anderen: Hilfe braucht jeder mal, soltl eman sich merken und jeder lernt das was er noch nciht gut kann, wenn er es möchte und sich damit beschäftigt. Machnmal mit Fehlern manchmal ohne.
 
Back
Top