Izbris vseh, razen zadnjih dveh datotek

Torej, na target sistem delam dnevne backupe v obliki:

backup-2016-09-01.img
backup-2016-09-02.img
backup-2016-09-03.img
...

Rad bi pobrisal vse stare datoteke, razen zadnjih dveh. Načeloma to storim takole:

ls -F | head -n 3  | xargs rm

No, problem je pa naslednji. Lahko se zgodi, da kakšen dan backup ne uspe. V tem primeru ne bi želel pobrisati zadnjih dveh datotek, pač pa bi želel, da zadnji dve vseeno ostaneta.

Še malo bolj komplicirana možnost je, da backup uspe samo delno. To bom vedel, če bo velikost backup datoteke premajhna (gre za kopijo disk imagea, ki mora biti velika točno 300 GB). V tem primeru bi rad pobrisal VSE stare datoteke, razen zadnjih dveh velikih 300 GB.

Any idea?

Komentarji

  • ls -F | wc -l 

    Ti bo povedal število datotek, kar lahko shraniš v spremenljivko in potem veš koliko datotek pobrisati.

    du -h "$ime_datoteke" | awk '{print $1}'

    Ti bo pa izpisal velikost v človeško berljivih enotah, kar lahko primerjaš s tvojo velikostjo. Zadnji dve veliki 300 GB shraniš v izjeme, ostalo brišeš.

    Torej, datoteke z ls izpišeš razvrščene po času (parameter -t) in če je njihovo število dva ali manj, nehaš. V nasprotnem primeru pa greš skozi seznam:

    ls -Ft $1 | while read datoteka; do echo $datoteka; done

    in prvi dve ujemanji veliki 300 GB shraniš v izjemo, vse ostale pa pobrišeš.

    Upam, da sem prav razumel problem.

Za komentiranje se prijavite ali pa se vpišite.