Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

DarkProject

DarkProject

Jungspund
Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann. Ich bin Praktikant normale Befehlsnutzung Funktioniert ganz ok aber mit Shell Scripten unter Linux hab ich leider nix am Hut kann man da nicht ein Simples Shell Script machen mittels cronjob das dieses Problem löst hab keine Ahnung wie dies ausehen könnte.

Hilfe wäre sehr nett

MFG Dark
 
Zuletzt bearbeitet:
Na, da bin ich ja mal gespannt, wie Du die Anforderung des TE ("Sichern von Files alter als 30 Tage") mit rsnaphot realisieren will...
 
beispielverzeichnis -type f -mtime +30 | tar -cvf /Verzeichnis/<Archivname>.tar /Verzeichnis/<Dateien> so hätte ich es versucht bin aber in sachen Linux noch ein Newb deswegen hab ich mich an diesem Board angemeldet und Hoffte etwas Hilfe zu erhalten. Vorallem weil das mittels Script ablaufen sollte und ich kein Plan hab wie ich was in ein Shell Script packe ...
 
Hab das mal so geschrieben ist das Korrekt oder muss ich was ändern wäre schon wenn wer helfen könnte.

find -P home/tester/html/typo3temp/logs/ -type f -mtime +30 -exec tar -cf home/tester/html/typo3temp/logs/backup/backup.tar home/tester/html/typo3temp/logs/ {} \;
 
(1) Code bitte in [ code ]-Tags packen - dann kann man das auch lesen.
(2) Analysier mal Deinen Befehl - was macht find, was übergibst Du tar und was sagst Du, soll tar machen?

Grundsätzlich bist Du so weit gar nicht weg von einer möglichen Lösung.
 
Zuletzt bearbeitet:
hab es etwas geändert, jetzt funktioniert es, sucht im Ordner logs nach Dateien die über 30 Tage alt sind und übergibt sie Tar um sie als archiv im ordner backup zu Speichern. Nur ein Problem hab ich er speichert sämtliche übergeordnete Ordner mit :( gibts da etwas das er nur den Ordner logs archiviert?

Code:
#!/bin/bash
find /home/tester/html/typo3temp/logs -type f -mtime +30 | tar -cvPf /home/tester/html/backup/home_backup.tar /home/tester/html/typo3temp/logs
 
einfachste Idee - vorher in's Verzeichnis wechseln und dort find ausführen. Kommt drauf an, was Du wie erreichen willst, also auch, wie Dein tar hinterher aussehen soll...

Zudem - warum gibst Du den kompltten Pfad zum VZ bei tar an? Du willst doch nur einzelne Files...

-> woher muss die Dateiliste übernommen werden, die tar abarbeiten soll?
... und überleg man, was Du tar (ein paar mal hintereinander) sagst... - sprich was für ein Archiv tar da konkret angewiesen wird, anzulegen...
 
Wenn Du bei tar das angibst, was Du sichern willst, dann ignorierst Du damit das, was find dir als Ergebnisse liefert.

Bei Unix nennt man die Übergabe von einem Prozess an den nächsten eine Pipe.

Code:
find -type f | tar -cvf backup.tar -T -

Der Befehl weist tar an, die über Pipe übergebenen Dateinamen zu sichern, sprich das was find selbst an die Pipe gibt. Der Strich - bedeutet oftmals: Lese von der Standardeingabe(z. B. von der Pipe) oder auch Schreibe auf die Standardausgabe(z. B. in eine Pipe, oder auf den Bildschirm).

... und die Option -P bei tar würde ich vermeiden. Oder willst Du echt den kompletten Pfad mit sichern? Der Tip vorher in das Verzeichnis zu wechseln ist wahrscheinlich das, was Dir die Arbeit mit der tar - Datei erleichtern wird.
 
Zuletzt bearbeitet:
Na, da bin ich ja mal gespannt, wie Du die Anforderung des TE ("Sichern von Files alter als 30 Tage") mit rsnaphot realisieren will...
Ich halte 30 daily backups vor und sichere dann am tag 30 das älteste backup dort hin wo es hin soll...

Dass es sich um logfiles handelt hab ich gekonnt überlesen

man -> logrotate

Macht genau das was du willst
 
auch da würde mich interessieren, wie Du damit die Anforderung des TE abbilden willst...
 
auch da würde mich interessieren, wie Du damit die Anforderung des TE abbilden willst...
Weiterführende Erklärungen findet man in der deutschen Man-Page zu Logrotate ....

Monatlich rotieren -> komprimieren -> nach Ablauf in VerzeichnisXY verschieben...

Läuft bei mir wunderbar... nur täglich und als Mailversand.
 
Schön. Entspricht nur nicht den Wünschen des TE. Oder ich verstehe nicht exakt, was Du meinst.

Zumdem ist das "erstelle mir ein Packet" darin nicht enthalten.
 
Hilfe wäre sehr nett

Ich sehe kein "Macht das mal für mich"

Code:
/var/log/logfileXY {
     monthly
     rotate 12 # hält 1 jahr vor
     create
     olddir /backup/logfile #hier kommt das backup hin
     postrotate
     ls / #optional zum ausführen nach dem rotate
     endscript
 }
 
Zuletzt bearbeitet:
abgesehen davon, daß (eine) Lösung dank hellfire ja schon da steht.

... für mehr Hilfe - wo klemmt's denn nun noch? Konkrete Frage -> konkrete Antworten oder zumindest konkrete Hinweise zur Selbstfindungs-Lösung.
 
An Logrotate habe ich auch schon gedacht aber es soll quasi auf einem Webserver in einem Beliebigem Verzeichnis laufen daten finden die älter als 30 Tage sind und diese in ein Tar Archiv packen das mit Datum versehen ist. Wie ich das Script genau schreiben soll weis ich nicht ... meine Lösung ist momentahn diese
Code:
find /home/tester/html/typo3temp/logs/ -type f -mtime +30 -exec tar -cvf /home/tester/html/typo3temp/logs/backup.$(date "+%d-%m.%Y").tar /home/tester/html/typo3temp/logs
Ich werde auch nie sagen macht das mal für mich :) aber wenn jemand ideen hat wie ich das löse hoffe ich doch sehr darauf.
Der andere Punkt wegen verzeichnis wechseln ist der ...
trage ich zuerst ins script ein cd /den Pfad dann funktionieren nachfolgende befehle irgendwie nicht.
Und da er ohnehin bei tar die Gesamte Ordnerstruktur inklusive Pfade sichert hrm komme da nicht wirklich weiter.
Und das ganze soll dann flexibel anpassbar werden.
 
@DarkProject: Lies Dir bitte die bisherigen Postings in dem Thread nochmals aufmerksam durch. Zusätzlich auch die Doku zu find und tar.

Denk' dabei immer daran: War erwartet tar als Eingabe (bzw. wie übergibst Du die Dateiliste?) und was liefert Dir find - je nach dem, welche Option Du verwendest.
 
Kanns grad nicht testen aber versuchs mal so:

Code:
tar cvf backup.tar `find ... deine Parameter`

Also das is die kurze Variante. Pack deinen find Befehl in die Hochkommas ` ` (schräg nach rechts) und setze diesen Part dann an die Stelle deiner Quelldaten.

Bei deinem Befehl fehlt zwischen "-exec tar" die Pipe und exec muss weg ... "find -parameter | tar cvf backup.tar" und die Quelldaten weg lassen.

Kurz:

Code:
find /pfad -parameter | tar cvf backup.tar
 
Zuletzt bearbeitet:
Zurück
Oben