Gå til innhold

Bash: Slett de eldste bildene


Anbefalte innlegg

Hallo alle Linux-venner :)

 

Hvordan lager jeg et script som alltid sørger for at f. eks. mappen /mnt/bildebank er under 30 000MB?

 

Altså, mappen skal til enhver tid inneholde kun 30 000MB med nye bilder. De eldste skal slettes.

 

Scriptet kjøres hvert 3. minutt (sammen med scriptet som lagrer et nytt bilde).

Jeg bruker cron til den jobben.

 

Tusen takk for alle innspill :)

Lenke til kommentar
Videoannonse
Annonse

Noe som dette er en start:

 

while [ `du --max-depth=0 -b $FOLDER | cut -f1` -gt $SIZE ]; do
   rm $FOLDER/"`ls -t $FOLDER | tail -n 1`";
done

 

Potensielle problemer:

* Takler neppe mellomrom i mappenavn

* Undermapper fører nok til evig løkke når den er eldst

* Sikkert mer :)

Lenke til kommentar

Jeg kan gi en kjapp forklaring...

 

 

while

sålenge...

 

 

[ `du --max-depth=0 -b $FOLDER | cut -f1` -gt $SIZE ]; do

...summen av filene i mappa som variabelen FOLDER "peker" på er større enn SIZE bytes...

 

"du" returnerer summen av filene i FOLDER (--max-depth=0) i bytes (-b)

"cut" returnerer i dette tilfellet første felt ("kolonne"), -f1, som er antall bytes

` ` gjør at det som står imellom skal kjøres (som en kommando) og resultatet returneres, i dette tilfelle inngår resultatet i en expression for å sjekke om det er større (-gt) enn SIZE.

 

 

rm $FOLDER/"`ls -t $FOLDER | tail -n 1`";

...slett eldste fil i mappa.

 

Igjen så kjøres en kommando; list alle filer (ls) i kronologisk rekkelfølge med eldste sist (-t) og plukk ut siste (tail -n 1), denne returneres og blir filnavnet i rm kommandoen (blir da rm $FOLDER/fil)

 

 

done

..."gå tilbake" og sjekk om mappa fortsatt inneholder mer enn SIZE bytes totalt.

 

Potensielle problemer:

* Takler neppe mellomrom i mappenavn

Ved å flytte litt på hvor " plasseres bør mellomrom i mappenavn kunne håndteres.

 

[ `du --max-depth=0 -b "$FOLDER" | cut -f1` -gt $SIZE ]

 

og

 

rm "$FOLDER/`ls -t $FOLDER | tail -n 1`"

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...