• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

probleme--> verzeichnisse löschen anhand vom Datum

Hallo alle miteinander.

Ich habe wirklich ein ersthaftes Problem.

Ich bin in Linux ein blutiger Anfänger!

kurz und bündig!

Wir haben einen Mailserver der jede Stunde updates fährt und dabei neue Verzeichnisse mit dem Namen
Beispielsweise AVPBase01.10.2004,99724
bis AVPBase25.11.2004,104860
ja und di platte ist nicht besonders groß daher manuell löschen!

Nun möchte ich nen script schreiben der alle AVPBase Verzeichnisse sucht und dann alle Verzeichnisse bis auf die die in den letzten 2 Tagen angelegt worden sind löschen!!

Bin hier echt am verzweifeln! :-(


MFG

Andre
 

TeXpert

Guru
1. Der Titel ist völlig irreführend :)

2. Du brauchst ein Programm, dass Ordner anhand ihres Datums ermittelt: --> find und als Stichworte -atime und -type d

3. diese Ergebnisse können dann mit einer for-Schleife gelöscht werden

--> man bash für die Schleife, man find für die Suche
--> wenn Du eine erste Löung hast, kannst Du Dich ja melden :)
 
OP
S

snoopykilla

Newbie
Oh danke für die antwort!

Oh man aber tausend dank nochmal für deine antwort! Ich hoffe ich kriege das morgen in der arbeit hin sonst krieg ich eine auf den deckel! Zum kotzen als auszubildender in so nem kleinBetrieb! Egal tut nix zur sache.

Wollte mich auf jedenfall mal rechherzlich bis hierher danken!

MFG
 

TeXpert

Guru
man bash und man find beantworten alle Deine Fragen * Punkt *

wenn Du keine eigene Energie aufwendest, dann werde ich hier nicht weiter helfen, wenn Du eine fertige Lösung haben willst, dann frag Deinen Chef, ob er meine Tagessätze zahlt. -> Anfrage per pm

Wenn Du Probleme mit einem 'fertigen' Script hast, wird Dir hier weiter geholfen werden, aber das ist keine kostenlose 'mach-mal-support-hotline'. Schreib ein Script und bei Problemen frag wieder
 
OP
S

snoopykilla

Newbie
Es hat ja keiner Verlangt das du es schreiben sollst! aber meine Frage war ja lediglich man was ich damit machen soll!

wie gesagt ich hab in Linux noch nie was gemacht und finde über man beim googlen nix wo mir sagen würde was es genau machen würde!

Ich sitz hier schon ne Woche davor und suche Befehle usw! Aber egal was und wie ich es ins script schreibe funktioniert es nicht!

Ich such jetzt einfach nochmal weiter und schau das ich irngedwas mal zusammenbekomme was funzt!

MFG

Und danke nochmals
 
OP
S

snoopykilla

Newbie
Oh man jetzt hab ich es!!!

Sorry wie gesagt keinen plan!

der man im zusammenhang mit find listet mir alles auf was ich machen kann ölö

den brauch ich in meinem script weiter ja gar nicht

Oh man ist me blöd!

Danke
 
OP
S

snoopykilla

Newbie
Code:
#find /opt/AVP -name 'AVPBase*' -type d -atime +2 
oder
#find / -name 'AVPBase*' -type d -atime +2

ok soweit sogut wollte es mal testen, ok, aber sobald ich -atime +2 hinhänge funktioniert gar nix mehr (er bringt kein Ergebnis)! er bringt mir keine Suchergebnisse, aber es sind alle Verzeichnisse älter als 2 Tage bis auf ein Testverzeichnis das ich heute erstellt habe! Anhand des Befehls soweit ich ihn verstehe müsste er doch alle AVPBase Verzeichnisse auflisten bis auf das eine das ich heute erstellt habe oder nicht? Irre ich mich etwa?

und setzte ich -atime -2 hin dann müsste er alle Verzeichnisse bringen die ich die letzten 2 Tage nicht mehr geöffnet habe! Aber er bringt mir da trotzdem alle Verzeichnisse auch das ich heute neu erstellt habe!

Was habe ich falsch gemacht? Ich brauche doch das Suchkriterum -Name AVPBase weil sonst bringt er mir auch die Verzeichnisse Base usw mit! und type d auch da ich ja nur auf Verzeichnisse los will!

Hoffe jemand kann mir helfen
 

TeXpert

Guru
Du kannst alte Posts auch editieren, musst nicht mit Dir selber reden :)

also 1. man ist dein bester Freund :) Du kennst ein Programm und suchst Optionen -> man befehl, hier also man find

jetzt ist nur noch die Frage, ob Dein -atime-Fenster richtig gewählt ist ... oder ob es Mode-Change-Daten sind, die Dich interessieren

Du kannst ja die Dateien mal genauer auseinander nehmen, stat <FILENAME> sagt Dir alles was Du wissen willst und dannn kannst Du entscheiden, ob atime, ctime oder mtime das relevante Datum hat.
 
OP
S

snoopykilla

Newbie
@TeXpert vielen rechtherzlichen dank!
schuldigung das ich mich so lang nicht mehr gemeldet hatte aber hier gings drunter und drüber und musste daher die arbeit abbrechen!

aber wie du schon sagtest es war nicht -atime sondern -ctime +2

funktioniert soweit alles wunder bar

Code:
#find /opt/AVP -name 'AVPBase*' -type d -ctime +2

so nun habe ich das ganze versucht in eine Schleife einzubauen! da kamen bei mir schon wieder die nächsten fehler!

Code:
#for löschvorgang in find /opt/AVP -name 'AVPBase*' -type d -ctime +2 do echo %löschvorgang gelöscht

ich hoffe das das blos ne kleinigkeit ist und ich nicht wieder alles falsch habe!:cry:

MFG

Andre
 

regexer

Advanced Hacker
snoopykilla schrieb:
Code:
#for löschvorgang in find /opt/AVP -name 'AVPBase*' -type d -ctime +2 do echo %löschvorgang gelöscht

ich hoffe das das blos ne kleinigkeit ist und ich nicht wieder alles falsch habe!:cry:

der befehl "find" hat auch einen "-exec". Mit hilfe dieses Parameters kann man für jeden Treffer einen bestimmten Befehl ausführen. Beispiel:
Code:
find /opt/AVP -name 'AVPBase*' -type d -ctime +2 -exec ls -ld {} \;

Wenn du dir dann sicher bist, dass du das wirklich alles löschen willst, kannst du ja dann den "ls -ld" im Beispiel durch "rm -rf" ersetzen...

Außerdem empfehle ich:
Code:
man find
 
OP
S

snoopykilla

Newbie
boah danke

jetzt funktioniert alles!

in der man war ich die ganze zeit und habe gesucht aber irgendwie kam ich da nicht ganz zurecht!

Vielen dank

jetzt hab ich nur noch ein problem! jetzt will mein cheff auch noch das alles in ein logfile geschrieben wird! soweit so gut logfile alles funktioniert!

aber er würde gern vor jedem gelöschten file im logfile noch das heutige Datum stehen haben! ich habe dann stehen

Code:
do
echo $date `%D' - $loeschverzeichnis 'wird geloescht...!' >> /var/log/killoptavp.log
rm -r $loeschverzeichnis
echo $date `%D' - $loeschverzeichnis 'ist geloescht!' >> /var/log/killoptavp.log
done

muss ich das Datum vorher in ne Variable schreiben oder wie sollte ich es am besten hier machen?

MFG

Andre
 

TeXpert

Guru
snoopykilla schrieb:
Code:
#for löschvorgang in find /opt/AVP -name 'AVPBase*' -type d -ctime +2 do echo %löschvorgang gelöscht
OK, das exec hast Du schon gehört, aber das Hauptproblem bei Deiner Schleife ist die falsche Syntax der for-Schleife.

notoxp schrieb:
Außerdem empfehle ich:
Code:
man find

das hab ich Ihm ja auch schon nahegelegt, und wenn der Hundetöter auch noch in
Code:
man bash
geschaut hätte, wäre Ihm auch die Syntax von for-loops bekannt...

snoopykilla schrieb:
ich hoffe das das blos ne kleinigkeit ist und ich nicht wieder alles falsch habe!:cry:
solange Du nicht lernst die manpages zu lesen und zu verstehen, wirst Du immer wieder vor diese Wände laufen.
 
OP
S

snoopykilla

Newbie
boah danke

jetzt funktioniert alles!

in der man war ich die ganze zeit und habe gesucht aber irgendwie kam ich da nicht ganz zurecht!

Vielen dank

jetzt hab ich nur noch ein problem! jetzt will mein cheff auch noch das alles in ein logfile geschrieben wird! soweit so gut logfile alles funktioniert!

aber er würde gern vor jedem gelöschten file im logfile noch das heutige Datum stehen haben! ich habe dann stehen


Code:
do
echo $date `%D' - $loeschverzeichnis 'wird geloescht...!' >> /var/log/killoptavp.log
rm -r $loeschverzeichnis
echo $date `%D' - $loeschverzeichnis 'ist geloescht!' >> /var/log/killoptavp.log
done


muss ich das Datum vorher in ne Variable schreiben oder wie sollte ich es am besten hier machen?
 
OP
S

snoopykilla

Newbie
ja aber er spuckt mir im logile nichts aus mit dem $date!

und wo habe ich das datum schon in ner Variable?
ja mit $date


MFG

Andre
 

TeXpert

Guru
dann lies die bash-manpage oder kauf Dir ein Buch.

Code:
$date
ist eine Variable mit dem Namen date, wenn da noch nichts drinsteht, dann solltest Du vorher einmal:
Code:
date=FOOBAR
machen, dass da was richtiges drinsteht. dann solltest Du wirklich in
Code:
man bash
oder hier im Forum nachlesen :) wie Du ein Programm aufrufst und die Ausgabe in einer Variablen speicherst.
 

pingoman

Newbie
@snoopykilla,

es reicht wenn Du folgende Seiten von Anfang bis Ende liest, danach wird Dir so einiges klar sein.

http://www.tldp.org/LDP/abs/html/index.html

anderen Menschen hier im Board, wünsche ich auch viel Spaß beim lesen. Dies ist meine private Fibel die ich immer aufsuche wenn ich mal nicht so recht weiterkomme.

Grüße

Pingoman
 
Will der Chef vor dem Löschen eigendlich noch ne Sicherungskopie der zu löschenden Datei? ;)

Oder das Löschprotokoll als Mail an seinen privaten Account?

Mal schaun, was für Unfug mir noch so einfällt *G*

Aber was hilfts mir, eine gelöschte Datei zu protokollieren, denn die bekomm ich eh nicht mehr lebendig...

...

Ha. noch ne Idee: Das ganze mit nem Webbrowser darstellen und per https abrufbar machen, mit Nutzerverwaltung usw.
 

regexer

Advanced Hacker
carsten schrieb:
Will der Chef vor dem Löschen eigendlich noch ne Sicherungskopie der zu löschenden Datei? ;)
Ja, bitte! Und zwar in /dev/null!
Aber was hilfts mir, eine gelöschte Datei zu protokollieren, denn die bekomm ich eh nicht mehr lebendig...
Aber ich weiß dann, welche dateien ich besser nicht geschreddert hätte. Das ist übrigens die Idee:
nimm shred statt rm!
 
Oben