Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

trage ich zuerst ins script ein cd /den Pfad dann funktionieren nachfolgende befehle irgendwie nicht.
...
Und das ganze soll dann flexibel anpassbar werden.

Wen du die Befehle hintereinander weg schreibst wird er sie dir als Parameter anrechnen:

Code:
cd /home find

da wird er find als Parameter von cd ausführen und einen Fehler verursachen. Du musst die Befehle Zeilenweise eingeben oder ich sag mal "verknüpfen"

Code:
cd /home && find

Führt erst cd /home aus und danach find.

Code:
cd /home
find

Macht das selbe nur Zeilenweise.

Ich empfehle dir dich mit der Bash zu beschäftigen. Evtl mal ein drei vier Seiten Tutorial zu lesen.

Wenn es flexibel sein soll würde ich mit Argumenten und Variablen arbeiten.
 
Übrigens, als Praktikant darfst Du sicherlich auch problemlos Deinen Betreuer fragen, wenn Dir was nicht klar ist. Der dürfte das sogar von Dir erwarten.

... weil, wenn Du ohne nachfragen mit einer Lösung kommst, wird er evtl. erwarten, daß Du sie ihm erklären kannst. Und das sehe ich bei Dir gerade noch nicht :-)
 
Wenn ich es richtig verstanden habe müsste es dann so ausehen?
Code:
cd /home/tester/html/typo3temp/logs/ && find /home/tester/html/typo3temp/logs/ -type f -mtime +30 | tar cvf backup.$(date "+%d-%m.%Y").tar
Wäre das demnach richtig?
 
Könnte klappen [emoji12] wobei ich auch behaupten würde, dass es auch ohne cd gehen würde. Müsstest die xy.tar halt mit absoluten Pfad schreiben.
 
Ich habs mal versucht Ordentlich in Variablen zu verpacken bekomme aber 2 Fehlermeldungen da mom keine Dateien in meinem Testverzeichnis sind die Älter als 1 Tag sind kann ich es durch abänderung der mtime leider nicht testen :(
Code:
#!/bin/bash
#  Test scipted by S.Villani  #
# Backup Skript Short Version #
BackupVZ=/home/tester/html/typo3temp/logs #Backup Verzeichnis
BackupN=Backup_$(date +%d%m%y).tar.gz    #Backup Outputfilename (Name des Sicherungsfiles)
cd /home/tester/html/typo3temp/logs &&
find $BackupVZ -type f mtime +30 | tar -czf $BackupN

Hier mal der Komplette Testverlauf (keine Sorge wegen root is ne VM ;))
Code:
root@ubuntu:/bin# bash new.sh
new.sh: line 6: $'\r': command not found
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
find: paths must precede expression: mtime
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec|time] [path...] [expression]
 
Bei mtime fehlt das -
wenn du

cd /pfad && tar $BackupN `find BackupVZ -type f -mtime +30`

verwendest gehts.

Nimm doch eie mtime von 1 zum testen
 
Also irgendwie - ich weiss auch nicht wieso - muss ich bei dem Threadverlauf immer an den Avatar denken, den ich bei DarkProject als Bild sehe.... :)

Ich wiederhole die Empfehlung von marce: Bitte lies den Thread von vorne bis hinten nochmal langsam durch. Die Lösung ist mit dem beschrieben was hier steht. Wenn Du es nach dem lesen nicht verstanden hast, beginne erneut damit. Irgendwann dämmert's schon.

Have Fun!
 
Habs mal Optimiert so sollte das eigendlich klappen :) Bin leider noch ein Neuling auf dem Gebiet über 20 Jahre Windows gehen nicht spurlos an einem Vorbei ;)
Code:
#!/bin/bash
#  Test scipted by S.Villani  #
# Backup Skript Short Version #
BackupVZ=/home/storm/html/typo3temp/logs #Backup Verzeichnis
BackupN=Backup_$(date +%d%m%y).tar.gz  #Backup Outputfilename (Name des Sicherungsfiles)
cd /home/storm/html/typo3temp/logs &&
find $BackupVZ -iname ´*.log´ -mtime +30 | tar -czf $BackupN {} \;
#end script#
 
Ich empfehle nochmals ausdrücklich die Lektüre von
Code:
man tar
bezüglich dem Punkt "Übergabe der Inputfiles"
 
Du hast jetzt viele Hilfen bekommen. Alles, was Du brauchst, steht hier in dem Thread. Aber scheinbar verstehst Du es nicht, weil Dir der Umgang mit Shell und Kommandos so gar nicht vertraut ist. Also durchaus nicht ungewöhnlich. Die einzige Hilfe, die Dich konkret zum Ziel führen würde, wäre das buchstabengenaue diktieren der Lösung, wobei Du aber nicht unbedingt verstehen würdest, was Du da tust.

Für das verstehen lernen eignen sich z. B. Tutorials oder ein gutes Buch. Hier mal Empfehlungen für Tutorials und ein gutes Online-Buch, was man auch gedruckt kaufen kann.
 
Zuletzt bearbeitet:
ist nicht ganz richtig wenn ich die gewohnten befehle einzeln nutze funktioniert komischerweise ja alles einzeln übers Terminal nur bei der umsetzung in ein Skript bekomme ich fehler oder es lässt sich nicht ausführen. zb Variablen ich deklariere etwas BackUp VZ ohne anführungszeichen kommen fehler mit auch. Zweites Problem mit absoluten Pfaden gehts auch nur beim vorherigen wechsel mit cd/verzeichnis wechselt er auch nicht dort hin das Tar wie gewünscht nur die Daten vom find befehl verarbeitet ging weder mit klammer also so {} ./; oder mit -T - beides bringt mir auch hier Fehler es schleicht sich leider immer wieder irgendwo ein Fehler ein und somit geht es nicht.
 
... "Es geht nicht" ist sicherlich nicht die Fehlermeldung, die Du bekommst.

... zudem Fakten sind besser als Prosa - vor allem auch noch viel besser als Bandwurmsätze.

Um die Lektüre eines guten Bash-Tutorials wirst Du über kurz oder lang nicht vorbeikommen. Und Du solltest Deine Methodik überdenken.
 
habe eine lösung meines Problems gefunden sie wäre ziemlich einfach gewesen hinter die geschweifte klammer mit dem befehl -exec nur ein Plus Zeichen hat alle Probleme gelöst da mit pipe nur der erste Befehl an den Zweiten weitergeleitet wird und wenn er nichts findet denoch ein leeres Archiv erstellt hätte mit -exec übergibt er an tar nur die gefunden dateien und wenn er nix findet mit find erstellt er kein verzeichnis :) ich finde die Methode sehr gut hab durch rumprobieren und nachlesen in einem Gescheiten Buch die Lösung gefunden :) denoch danke an alle die mir helfen wollten.
 
Ohne Dir nahetreten zu wollen: Aber Deine Erklärung sagt eigentlich nur 2 Dinge:
* Was Du schreibst, verstehen wir (bzw. mind. ich) nicht
* Du hast es auch nicht verstanden.

Wäre nett, wenn Du Deinen Code postest - vielleicht lösen sich dann beide Vermutunegn auf.
 
Code:
#!/bin/bash
#backup export
cd /html/typo3temp/logs/
find -iname '*.log' -mtime +30 -exec tar -czf backup_$(date +%d-%m.%y).tar.gz {} +

zumindest tut es nun alles was ich wollte :)
 
Zuletzt bearbeitet:
Glückwunsch zur Lösung. Auch besonders da es eine ist, die Du selbst gefunden hast und eher unüblich ist - Da habe ich wieder was gelernt.

Und achte darauf, dass Du nicht zu viele Dateien sicherst. Dein find füllt den tar so lange mit Argumenten, wie in einen Befehl passen. Wenn's mehr wird, dann ruft find den tar einfach nochmal auf und überschreibt somit das vorhandene Archiv. Das willst Du mit Sicherheit nicht.

Ich gehe mal davon aus, dass Du sehr weit von dieser Grenze weg bleiben wirst. Ich habe das mal getestet. Bei mir ist die Grenze ca. 128.000 Zeichen oder ca. 760 Dateien mit je 170 Zeichen Länge. Grundsätzlich wäre tar -T - die sicherere Lösung.
 
Zuletzt bearbeitet:
Zurück
Oben