Dateien nicht älter als 24h finden und archivieren

K

knumskull

Foren As
Moin,

ich versuche mich grad ein bisschen in backup-scripting. Leider scheitert es schon an der kleinsten Sache.

Ich möchte, wie im Topic auch schon beschrieben, die Dateien, die in den letzten 24h angefasst wurden, archivieren.

So ungefähr habe ich mir das gedacht.

find /var/www/ -atime +1 -exec tar c {} \; | gzip | cat > output.tgz

das läuft ja soweit durch, jedoch archiviert er nur die erste Datei die er findet. Kann mir jemand meinen Denkfehler sagen?

Gruß Steffen
 
muß es nicht so heißen?
Code:
find /var/www/* -atime -1
 
Manpage lesen ... exec wird pro Datei *einmal* ausgeführt.

Andere Möglichkeiten:
- xargs
- tar jedes Mal die Datei anhängen lassen an das Archiv
- tar eine Liste von Dateien übergeben (als Datei und nicht in der Kommandozeile)

Die Manpages geben jeweils Aufschluss zu den Tools und Möglichkeiten.
 
Zuletzt bearbeitet:
ich hab noch son paar problemchen mit piping ... gibts da nen gutes tutorial oder sowas, wo das ganze Thema gut beschrieben ist?

Aber so richtig weiß ich nicht, was ich in den Man-Pages noch finden soll. Ich habe die wirklich schon öfters durchgeschaut.
 
So etwa:

Code:
find /var/www/  -ctime -1  -print0 | xargs -0 tar cvfj output.tar.bz2 -

BTW: Nur ein Prob. pro thread.
 
Hallo
Hinweise zur PIPE findest du in der Manpage deiner (hier nicht genannten) verwendeten Shell.
Um das richtig zu verstehen, kannst du in einer beliebigen Suchmaschine nach Begriffen wie pipe redirect u.ä forschen. ;)
In deinem Fall gilt das auch für dein verwendetes tar.

tar kann auch Dateien anhängen, allerdings ohne Komprimierung.

Code:
find /path -type f -exec tar -rf /path/archiv.tar {} \;

Gruß Wolfgang
 
Schau mal in der Manpage von tar den Parameter -T an.. Das xarg Modell hat wahrscheinlich das Problem, dass das nur mit einer kleinen Menge von Dateien geht. Ansonsten haben aqualung und Wolfgang dir aber schon 2 von den 3 genannten Möglichkeiten erklärt.

Das Problem bei xargs ist wie gesagt, dass das -glaube ich- ab einer bestimmten Menge von Dateien nicht mehr funktioniert.

Bei der zweiten Variante wird für jede Datei ein neuer tar Prozess gestartet, dass kann bei vielen kleinen Dateien sehr gemein auf die Laufzeit schlagen.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Übrigens ist das kein Problem mit dem Piping, das war schon prinzipiell richtig. Der Denkfehler ist eben, dass du nicht mehrmals tar laufen lassen kannst und dann das nachher komprimierst. Wichtig: "| cat > " Ist total überflüssig und kann durch > ersetzt werden.
 
Zuletzt bearbeitet:
das sind schonmal gute hinweise ... werde ich mal schauen und dementsprechend weiter testen. Danke erstmal.

Shell ist ne bash. Sorry - man wird vergesslich. Ich schreibs mir auf ;)
 
keine Angst, das poste ich. Wenn ich Zeit habe weiter zu machen. Wird wahrscheinlich frühestens morgen abend was.
 
hallo knusmull, ohne jetzt mal wieder werbung machen zu wollen. schau dir mal meinen thread an oder zieh dir das advanced bash scripting guide rein.

in meinen bashtools findest du ein backupscript, welches genau das leistet was du suchst. es basiert auf einem script das ich dem ABS entnommen habe.

ich hoffe ich konnte helfen

grüße tuxlover
 

Ähnliche Themen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Script zum Bereinigen von Dateien mit Unterverzeichnissen (Schadcode löschen) eilt

Zurück
Oben