Powiel możliwe:
Delete all but the most recent X files in bashBash polecenie, aby usunąć wszystkie ale ostatnie 5 katalogów
Mam skrypt do tworzenia przyrostowych kopii zapasowych codziennie i muszę usunąć wszystkie kopie zapasowe, ale ostatnie 5.
Na przykład mam ten foldery:
drwxr-xr-x 4 root root 4096 Oct 29 01:10 2010-10-29 drwxr-xr-x 4 root root 4096 Oct 30 01:10 2010-10-30 drwxr-xr-x 4 root root 4096 Oct 31 01:10 2010-10-31 drwxr-xr-x 4 root root 4096 Nov 1 01:10 2010-11-01 drwxr-xr-x 4 root root 4096 Nov 2 01:10 2010-11-02 drwxr-xr-x 4 root root 4096 Nov 3 01:10 2010-11-03 drwxr-xr-x 4 root root 4096 Nov 4 01:10 2010-11-04 drwxr-xr-x 4 root root 4096 Nov 5 01:10 2010-11-05 drwxr-xr-x 4 root root 4096 Nov 6 01:10 2010-11-06 drwxr-xr-x 4 root root 4096 Nov 7 01:10 2010-11-07 drwxr-xr-x 4 root root 4096 Nov 8 01:10 2010-11-08
I muszę zachować tylko ostatnie 5 katalogów i usunąć pozostałe. Po polecenie wykonać, muszę mieć tylko to:
drwxr-xr-x 4 root root 4096 Nov 4 01:10 2010-11-04 drwxr-xr-x 4 root root 4096 Nov 5 01:10 2010-11-05 drwxr-xr-x 4 root root 4096 Nov 6 01:10 2010-11-06 drwxr-xr-x 4 root root 4096 Nov 7 01:10 2010-11-07 drwxr-xr-x 4 root root 4096 Nov 8 01:10 2010-11-08
nie muszę usunąć poprzednie 5 dni, muszę usunąć wszystko z wyjątkiem ostatnich 5 katalogów :)
Teraz używam :
find /backup/increment -maxdepth 1 -type d -mtime +5 -exec rm -rf {} \;
Ale muszę się do poprawy nie opiera się w czasie :)
EDIT: To jest przykład dla serwera, który zrobić kopie zapasowe wszystkich dni, ale muszę mieć skrypt, który usuwał wszystkie foldery wcześniejsze trwać 5, ponieważ mój komputer robić kopie zapasowe na 00:10 w nocy, ale nie wszystkie noce kopia zapasowa jest wykonywana, bo mój komputer nie działa we wszystkie dni, i muszę zawsze mieć ostatnie 5 kopie :)
Jeśli to nie jest „oparty na czasie”, jaka jest twoja definicja „ostatnie 5”? –
@dogbane dzięki, ale rozwiązanie @MartinStettner wydaje się być bardziej eleganckim rozwiązaniem :) – Lito
@David Dodano komentarz w głównym poście. – Lito