Löschen von Verzeichnissen älter als x Tage per Cron (Script)

Diskutiere Löschen von Verzeichnissen älter als x Tage per Cron (Script) im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo,nach Stundenlanger Suche mit meinem Freund Google versuch ich es jetzt mal hier.... Folgendes vorhaben. Ich brauche ein Script was mir in...

  1. #1 Siegfried29, 31.03.2008
    Zuletzt bearbeitet: 01.04.2008
    Siegfried29

    Siegfried29 Jungspund

    Dabei seit:
    31.03.2008
    Beiträge:
    11
    Zustimmungen:
    0
    Hallo,nach Stundenlanger Suche mit meinem Freund Google versuch ich es jetzt mal hier....

    Folgendes vorhaben.

    Ich brauche ein Script was mir in einem "Verzeichniss" alle Verzeichnisse löscht die ein bestimmtes Alter überschritten haben.

    Die möglichkeit Dateien zu löschen die älter als x Tage sind habe ich bereits gefunden.

    Nochmals zu Erklärung

    Beispiel

    /srv/www/htdocs/ipc/pics <----- Verzeichniss

    Darin befinden sich etliche Verzeichnisse ohne erkennbares Benennungsmuster

    Ich möchte also das alle Verzeichnisse unter /srv/www/htdocs/ipc/pics gelöscht werden die älter als 14 Tage sind.


    Wie und womit wäre das möglich. Am liebsten wäre mir natürlich ein Shellsript was ich per cron ausführen lassen kann.

    Mein System

    OS = Suse Linux 10.1 32 Bit
    Shell = Bash


    Bedanke mich jetzt schon mal für eure Hilfe und bin auf eure Ideen gespannt....


    Viele Grüße Siegfried
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 01.04.2008
    Zuletzt bearbeitet: 01.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    das hast du doch schon ganz richtig erkannt, sollte sich mit einem Shellskript doch ziemlich schnell und einfach machen lassen.

    Schau dir mal die manpage von find an, zusammen mit rm hast du dann doch schon alles was du brauchst, wenn ich mich nicht irre ;)

    IMHO liegt das hier uebrigens im falschen Forum.

    mfg,
    bytepool
     
  4. #3 Siegfried29, 01.04.2008
    Siegfried29

    Siegfried29 Jungspund

    Dabei seit:
    31.03.2008
    Beiträge:
    11
    Zustimmungen:
    0
    Ich bin mal ehrlich,was rede ich,bin immer ehrlich.....

    Ich erhoffe mir das mir hier jemand das ding schreibt.....

    Ich weiß,es ist nur nen Einzeiler warscheinlich,aber genau den brauch ich :)

    Hab zu viel Respekt vorm bösen RM :) Also das ich da selbst rum probiere.....

    Wäre also sehr dankbar wenn es mir einer ab nimmt,des weiteren iss mein Englisch irgend wie meinem alter entsprechend nicht mehr sehr frisch....


    Des weiteren,im falschen Forum geschrieben? Sorry,muss das wohl einer verschieben :) Habt Geduld mit mir,ich steig hier noch durch :)
     
  5. sinn3r

    sinn3r Law & Order
    Moderator

    Dabei seit:
    28.12.2006
    Beiträge:
    2.769
    Zustimmungen:
    3
    Ort:
    Wentorf
    Verschoben.

    Bitte noch OS und die verwendete Shell angeben.
     
  6. #5 bytepool, 01.04.2008
    Zuletzt bearbeitet: 01.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    na gut, aber nur weil ich schon lange kein bash skript mehr geschrieben hab, und ich da grad mal wieder Spass dran hatte ;)
    Im allgemeinen lohnt es sich echt die Grundlagen vom skripting zu lernen, das macht Spass und ist nuetzlich.

    Code:
    #!/bin/bash
    
    path="/pfad/zu/verzeichnis/"
    
    for dir in $(find $path -atime +14 -type d); do
        rm -rfv $dir;
    done
    
    Das ist jetzt ungetestet, sollte aber eigentlich gehen. Aber rm -rf ist natuerlich boese, da musst du gut mit aufpassen.
    Du solltest das auf jeden Fall erst in einem Test Verzeichnis testen.

    Edit:
    Achso, wenn du das als cronjob haben willst, willst du wohl nicht die verbose Option, also nur rm -rf.

    Edit2:
    Eventuell hat das Skript Probleme mit Verzeichnisnamen die Leerzeichen enthalten. Aber Leerzeichen in Dateinamen gehoeren sich ja auch nicht ;)

    mfg,
    bytepool
     
  7. #6 Siegfried29, 01.04.2008
    Siegfried29

    Siegfried29 Jungspund

    Dabei seit:
    31.03.2008
    Beiträge:
    11
    Zustimmungen:
    0
    Also,leider noch kein Erfolg.... hab nen Testverzeichniss mit Verzeichnissen älter als 14 tagen,es wird nichts gelöscht.....

    pack ich deine idee in ne einfache datei,sprich autodelete oder in ne autodelete.sh

    ausführbar ist sie jedenfalls,habe mal beide varianten angelegt,aber es bringen beide keinen erfolg. es wird kein verzeichniss gelöscht....

    selbstredend als root ausgeführt....
     
  8. #7 bytepool, 01.04.2008
    Zuletzt bearbeitet: 01.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Oh, ehm, definiere doch bitte mal aelter...
    -atime steht fuer access time, also Zugriffszeit, d.h. es wird abgefragt, ob auf die Datei in den letzten 14 Tagen zugegriffen wurde.

    Edit:
    Eventuell ist -ctime das was du suchst. Das gibt die letzte Statusaenderung der Datei.

    mfg,
    bytepool
     
  9. #8 Siegfried29, 01.04.2008
    Zuletzt bearbeitet: 01.04.2008
    Siegfried29

    Siegfried29 Jungspund

    Dabei seit:
    31.03.2008
    Beiträge:
    11
    Zustimmungen:
    0
    Also ich meine definitiv Verzeichnisse die Älter als 14 Tage alt sind.... sprich vor 15 Tagen und mehr angelegt wurden....

    glaube ich muss auch erwähnen das sich in den Verzeichnissen Dateien befinden oder?

    Also nochmal zusammen gefasst,ich möchte das er Verzeichnisse in einem Verzeichniss löscht,er soll schauen was älter als 14 tage alt ist und es löschen,dabei zu beachten,die verzeichnisse die er löschen soll sind nicht leer,darin befinden sich ab und zu auch verzeichnisse und IMMER dateien....

    So,nu haben wir es :)

    ///edit Musste gerade leider woanders lesen das rmdir NIEMALS Verzeichnisse löscht in denen sich noch dateien befinden.... Was machen wa denn nun? Doch immer von Hand alte Verzeichnisse samt inhalt löschen???
     
  10. #9 bytepool, 01.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    also sonst koennte ich nur noch -mtime anbieten, das ist die modification time, also die Zeit zu der die Datei als letztes geaendert wurde ;)
    Wie man an die Zeit der Erstellung rankommt weiss ich gar nicht.

    Ausserdem fiel mir grade ein, dass find standardmaessig rekursiv arbeitet, d.h. du solltest auch noch -maxdepth 1 setzen, damit er nur die Verzeichnisse im uebergebenen Verzeichnis findet. Den Rest erledigt dann rm.

    Edit:
    Also das sollte dann in etwa so aussehen:
    Code:
    for dir in $(find $path -maxdepth 1 -mtime +14 -type d); do
        rm -rf $dir;
    done
    
    mfg,
    bytepool
     
  11. #10 Siegfried29, 01.04.2008
    Siegfried29

    Siegfried29 Jungspund

    Dabei seit:
    31.03.2008
    Beiträge:
    11
    Zustimmungen:
    0
    Code:
    #!/bin/bash
    
    path="/home/test/müll/"
    
    for dir in $(find $path -maxdepth 1 -mtime +2 -type d); do
        rm -rfv $dir;
    done

    In /home/test/müll/ befinden sich etliche ordner mit dateien darin,einige ordner von heute,einige älter,maximal 5 tage alt,habe deswegen mal testweise deinen code auf -mtime +2 gesetzt.....

    Und trotzdem passiert nichts....

    meine Datei heisst autodelete.sh ausführen tu ich sie als root

    testserver:~ # ./autodelete.sh
    testserver:~ # autodelete.sh

    Beide Varianten bringen weder nen Fehler,noch nen Erfolg....

    doch ne schwere Geburt oder.... :)
     
  12. #11 bytepool, 01.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hast du mal geguckt was dir einfach nur "find ./ -maxdepth 1 -mtime +2 -type d" in dem Verzeichnis ausgibt?

    Im uebrigen scheint find auch das aktuelle Verzeichnis (./) mit auszugeben, was natuerlich nicht das ist was du willst, denn wenn das als Argument an rm -rf uebergeben wird, wuerde er das root Verzeichnis (von dem Aufruf) direkt mit Loeschen. Muesste man wohl auch noch mit rausnehmen, kA ob find dafuer eine option hat, oder ob man das mit einer if Abfrage machen muesste.

    mfg,
    bytepool
     
  13. #12 Siegfried29, 01.04.2008
    Zuletzt bearbeitet: 01.04.2008
    Siegfried29

    Siegfried29 Jungspund

    Dabei seit:
    31.03.2008
    Beiträge:
    11
    Zustimmungen:
    0
    find ./ -maxdepth 1 -mtime +2 -type d

    nach diesem Befehl zeigt er mir 5 Ordner an,13 befinden sich im Ordner,also scheint er ja schon mal die zu finden die älter als 2 tage sind.... nur das löschen scheint ihm nen problem zu machen.....

    Folgende Ausgabe

    Code:
    testserver:/home/test/müll # find ./ -maxdepth 1 -mtime +2 -type d
    ./BilderMesse 28032008
    ./BilderMesse 26032008
    ./BilderMesse 25032008
    ./BilderMesse 22032008
    ./BilderMesse 11032008
    testserver:/home/test/müll #
    
    


    Aufpassen,habe jetzt mal in deinen code das rm -rfv durch rm -rfiv ersetzt.....

    Schau dir mal die meldung an,evtl kannst damit was anfangen.....


    Code:
    
    testserver:~ # autodelete.sh                                                                     
    rm: cannot lstat `/home/test/müll/BilderMesse 28032008': No such file or directory
    rm: cannot lstat `BilderMesse 26032008': No such file or directory
    rm: cannot lstat `BilderMesse 25032008': No such file or directory
    rm: cannot lstat `BilderMesse 22032008': No such file or directory
    rm: cannot lstat `/home/test/müll/BilderMesse 11032008': No such file or directory
    testserver:~ #
    
    Das ist doch komisch oder?
     
  14. #13 bytepool, 01.04.2008
    Zuletzt bearbeitet: 01.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Wer schrieb denn auch was von rmdir? Ich schrieb "rm -rf", das ist ein voellig anderer Befehl.

    Und sehe ich da etwa Leerzeichen in den Verzeichnisnamen? Siehe einen meiner Edits von weiter oben ;)
    Das Skript kann in der jetztigen Form damit nicht umgehen. Laut manpage laesst sich das Problem mit einem bestimmten Parameter umgehen, aber ich habe noch nicht wirklich rausgefunden wie das funktionieren soll. Da muessten wohl die find Spezialisten hier ran ;)

    mfg,
    bytepool
     
  15. Gast1

    Gast1 Gast

    Ich würde das ja mittels "-exec" machen.
     
  16. #15 bytepool, 01.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Stimmt, macht Sinn. Ich hab noch nie mit find in nem Skript gearbeitet, aber -exec scheint wie geschaffen dafuer... Wieder was gelernt.
     
Thema: Löschen von Verzeichnissen älter als x Tage per Cron (Script)
Besucher kamen mit folgenden Suchen
  1. debian bash alle dateien ältet.als.löschen

    ,
  2. cronjob ordner löschen älter

    ,
  3. crontab verzeichnisse löschen älter als

    ,
  4. dateien löschen die älter als x tage sind linux,
  5. löschen Verzeichnisse älter als ,
  6. verzeichnisse nach alter löschen,
  7. linux alte verzeichnisse auflisten,
  8. ordner löschen die älter sind als x tage batch,
  9. linux dateien vor datum löschen,
  10. rm alles was älter als,
  11. unix files löschen älter als,
  12. unix dateiem alter als x dann löschen,
  13. shell ordner nach alter auflisten,
  14. linux alte verzeichnisse löschen,
  15. .sh images automatisch nach x tage löschen,
  16. linux alle dateien eines verzeichnisses löschen die älter sind als,
  17. linux batchdatei inhalte löschen,
  18. linux dateien löschen älter als,
  19. löschen x tage,
  20. daten in /datei älter als 7 Tage löschen BASH,
  21. datei älter 7 tage löschen linux,
  22. linux verzeichnisse finden mit inhalt älter als,
  23. linux rekusiv Dateien alter x tage löschen,
  24. linux dateien älter als x tage löschen,
  25. Dateien loeschen älter als bash
Die Seite wird geladen...

Löschen von Verzeichnissen älter als x Tage per Cron (Script) - Ähnliche Themen

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

    Script zum Bereinigen von Dateien mit Unterverzeichnissen (Schadcode löschen) eilt: Ich tue mich etwas schwer mit shell-Scripten und benötige dringen ein ständig anpassbares Script, das immer ab dem Stammverzeichnis in dem ich...
  2. SSD sicher löschen

    SSD sicher löschen: Hallo zusammen Ich habe eine Frage zum sicheren Löschen meiner SSD, damit ich sie verkaufen kann. Wie findet ihr mein folgendes Vorgehen: Habe...
  3. Duplikate aus Liste löschen

    Duplikate aus Liste löschen: Hi, ich habe z.B. folgende Datei mit 2 Spalten: test1 test1 test2 test3 test3 test1,test2,test3 test4 test40,test4 test5...
  4. Komplette Spalten aus Datei löschen.

    Komplette Spalten aus Datei löschen.: Hallo, ich habe noch eine Frage. Und zwar habe ich eine .dat Datei. Diese Datei enthält 5 Spalten mit Werten. Ich würde gerne die vierte und die...
  5. Zeilen aus Textdatei löschen die $Var1 enthalten und nicht $Var2

    Zeilen aus Textdatei löschen die $Var1 enthalten und nicht $Var2: Ich habe folgendes Problem: Ich will aus einem Textfile Zeilen entfernen: - die $Variable1 enthalten - aber nicht wenn sie $Variable2 (oder...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden