delold onder linux

Pagina: 1
Acties:

  • Guider
  • Registratie: Februari 2001
  • Laatst online: 23-02 10:17
Ik heb hier een camera staan die om de 3 seconden een afbeelding maakt. Nu heb ik al een script gemaakt die er voor zorgt dat alle bestanden van de laatste 10 minuten naar een map worden gekopieerd en deze dan op de fileserver worden opgeslagen. Dit gaat allemaal prima

Nou is mijn vraag, wat voor een script moet ik schrijven om er voor te zorgen dat bestanden na 3 dagen worden verwijderd en dit allemaal onder linux. In windows heb je hier het delold commando voor maar hoe krijg ik dit voor elkaar onder linux.

BVD

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Ik denk dat jij even
code:
1
man 5 crontab

moet intikken ;)

Verder zijn er zat BASH scripting guides online te vinden. Dan kan je bijvoorbeeld dagelijks vanuit cron met een scriptje alle bestanden ouder dan drie dagen laten verwijderen.

[ Voor 58% gewijzigd door Confusion op 11-12-2003 14:51 ]

Wie trösten wir uns, die Mörder aller Mörder?


  • Guider
  • Registratie: Februari 2001
  • Laatst online: 23-02 10:17
Daar heb ik ook al aangedacht allen dan leeg ik de hele map en niet alleen de oudste bestanden. Ik wil namelijk alleen de bestanden verwijderen die 3 dagen oud zijn.....

Die crontab kun je toch alleen gebruiken als taakplanner?

[ Voor 17% gewijzigd door Guider op 11-12-2003 15:04 . Reden: vraagstekens ]


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
1 vraagteken per vraag is voldoende, en als je bestanden wil selecteren op datum is find (1) je vriend.

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 07-02 20:23

Gertjan

mmmm, beer...

Guider schreef op 11 december 2003 @ 14:53:
Daar heb ik ook al aangedacht allen dan leeg ik de hele map en niet alleen de oudste bestanden. Ik wil namelijk alleen de bestanden verwijderen die 3 dagen oud zijn
Schrijf een cron-scriptje die elke dag bekijkt welke bestanden in die dir ouder zijn dan drie dagen. Die bestanden gooi je weg en de rest laat je lekker staan.
Op die manier gooi je je hele directory niet leeg hoor :)

  • Wilke
  • Registratie: December 2000
  • Laatst online: 22:21
Guider schreef op 11 december 2003 @ 14:53:
Daar heb ik ook al aangedacht allen dan leeg ik de hele map en niet alleen de oudste bestanden. Ik wil namelijk alleen de bestanden verwijderen die 3 dagen oud zijn.....
Zoals gezegd, kijk naar de opties van 'find'. Dus zoiets:

Bash:
1
find /volledig/pad/naar/pics/ -mtime +3 -print0 | xargs --null echo


Het woordje 'echo' vervangen door 'rm' als je tevreden bent met de lijst van 'te deleten' bestanden die hierdoor gegenereerd worden...(pas doen als je daar HEEL zeker van bent, anders ben je zomaar een hele zooi files kwijt). Zeker als root nooit klooien met commando's met 'rm' er in als je niet heeel, heel, heeeeeel erg zeker weet wat ze precies gaan doen.

Wat de opties -print0 bij find en --null bij xargs doen, moet je maar even in de manual-pages opzoeken. Ik gok dat het zo nog steeds niet perfect werkt met spaties in bestandsnamen (maar al beter dan anders) - dat zou je dus even moeten testen.

Stel jezelf ook vooral precies op de hoogte van wat '-mtime' doet. De +3 als parameter voor mtime betekent 'alles ouder dan 3 dagen'. Je kunt ook zeggen '3' (precies 3 dagen oud) of '-3' (minder dan 3 dagen oud). Eigenlijk betekent het ook niet precies 'ouder dan 3 dagen', maar 'al meer dan 3 dagen niet gewijzigd'. In jouw geval zal dat wel OK zijn.

P.S. Vreemd genoeg schijnt het uit te maken dat '-print0' aan het eind staat van het find commando. Waarom snap ik ook niet.
Die crontab kun je toch alleen gebruiken als taakplanner?
ja, en daarmee kun je zorgen dat het verwijderen 'automatisch' gebeurt als je dat wilt. Dus dat je automatisch altijd alleen bestanden hebt van de laatste 3 dagen, zonder dat je met de hand een of ander script moet uitvoeren.

  • Guider
  • Registratie: Februari 2001
  • Laatst online: 23-02 10:17
Bedankt voor de nuttige informatie hier kan ik zeker wel wat mee en ga het zo even uit proberen.

Die cronjobs heb ik al een keer eerder gebruikt maar ik wilde even zeker weten.

Bedankt

Weer een stapje verder in de wereld van Linux

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wilke schreef op 11 december 2003 @ 18:21:
Bash:
1
find /volledig/pad/naar/pics/ -mtime +3 -print0 | xargs --null echo
Waarom niet:
Bash:
1
find /volledig/pad/naar/pics/ -mtime +3 -ls


en bij tevredenheid:

Bash:
1
find /volledig/pad/naar/pics/ -mtime +3 -exec rm '{}' ';'

of
Bash:
1
rm `find /volledig/pad/naar/pics/ -mtime +3`

xargs is niet echt nodig lijkt me?
Pagina: 1