gesucht: Löschscript für Dateien älter als xx Tage

  • Hi


    da ich meinen ftp-server fürs Forum zur verfügung stelle, sammeln sich da einige Dateien an - ist nicht schlimm. ich würde aber gerne automatisch die jeweils ältesten dteien in dem Bereich löschen wollen...
    Also ein Script, welches alle dateien, die älter als xx tage sind, in den orkus, und zwar per cron gestartet ...


    wer hat sowas schon gemacht oder nen Anstoß, wies ginge ? :)

  • Zitat

    Original von sigiberlin
    wer hat sowas schon gemacht oder nen Anstoß, wies ginge ? :)


    Hab's jetzt nicht genau im Kopf, aber

    Code
    man find

    hilft Dir weiter.
    Z.B. loesche alle symbolischen Links:

    Code
    find /srv -type l -exec rm {} \;

    . Der exec Teil ist manchmal verwirrend. Aber wenn man das einfach so schreibt ist es ok.

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • lass dir von find die datein übergeben


    find -[atime, -ctime, -mtime, -daystart, -exec]
    irgendwas auf die art



    [EDIT] zulang an den optionen gesucht :lehrer2 [/EDIT]

    Software: e-tobi (1.4.7-2ctvdr3), etch (2.6.18-5-486)
    Hardware: ASUS Pundit AB-P2600, Celeron 2.4GHz, Ram 256MB, Hauppauge DVB-c rev2.1, TT DVB-c Budget rev1.0, 460GB, URC- 8203 @ Zapway IR
    Surround: Denon AVR-1801 & Magnat Prisma 5100a Boxen
    Patches/Addons: nvram, noad, vdrconvert
    Plugins: mplayer, mp3, dvd, dvdselect, text2skin, nordlichtsEPG, vdradmin-am, epgsearch, femon
    EPG: epg4vdr
    _____________________
    UPC Telekabel Austria

    Einmal editiert, zuletzt von NeoTrace ()

  • Zitat

    #!/bin/sh
    # Loescht alles(!), was aelter als 5 Minuten ist


    touch -t `date +"%m%d%H%M" --date="5 minutes ago"` /tmp/vgl.txt
    find /woauchimmer ! -newer /tmp/vgl.txt -print0 | xargs -0 rm -rf
    rm /tmp/vgl.txt


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • Zitat

    Original von sigiberlin
    rekursiv ab einem bestimmten Verzeichnis alle Verzeichnisse löschen, in denen nix mehr oder nur noch leere Verzeichnisse sind ....


    Na, das ist eine andere Stufe.
    Das geht IMHO nicht mehr nur mit find. Vielleicht hilft das ja

    Code
    find . -type d | sort -r > dirs.txt
    for i in `cat dirs.txt` ; do rmdir $i ; done


    rmdir loescht nur leere Verzeichnisse, also keine Gefahr.

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

    2 Mal editiert, zuletzt von knebb ()

  • Zitat

    Original von Hulk

    Code
    find "." -type d -empty -print0 | xargs -0 rmdir


    Na, das bringt aber nix, wenn durch das Loeschen eines leeren Verzeichnisses das darueberliegende leer wird. Das wird dann nicht geloescht. Fuer die rekursive Sache brauchst Dumein Codefragment oben..

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Zitat

    Original von slime
    edit: ich nehme das zurück. ich vermute mal, das kleine -r bei sort ist dafür zuständig die reihenfolge zu verdrehen.


    Du hast es erfasst :gap

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Hallo knebb,


    geht doch nur mit find:

    Code
    find . -depth -type d -empty -exec rmdir "{}" \;

    Der parameter depth sorgt beim find für die Ausgabe des Unterverzeichnisses vor dem Hauptverzeichnis.


    Gruß,
    ARK

    VDR
    ASUS A7N8X-X, AMD 2600+, 2 GB, 320 GB HD, Hauppauge DVB-S 1.3, Hauppauge Nova-S-Plus, Funktastatur
    Debian 4.0/Etch-Kernel 2.6.18-5-486
    c't-VDR 6.1 mit e-tobi 1.6.0 (neu gepatched ohne sortrecordings), acpi, vdradmin-am, burn, osdteletext, ffnetdev, audiorecorder, infosatepg, ...
    Client
    dbox2 (Sagem 2xI_C) mit Neutrino-Derivat

  • Code
    for i in `cat dirs.txt` ; do rmdir $i ; done


    Habe ich früher auch immer genommen. allerdings gibts da Probleme mit Leerschritten in Verzeichnis- bzw. Dateinamen. Meine Lösung dafür ist jetzt


    Code
    while read name; do rmdir $name; done < dirs.txt


    Gruss
    Lothar

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!