Aktualizacja merytoryczna: 15.10.2026. Przykłady dotyczą GNU find, używanego m.in. w Debianie i Ubuntu. Operacje usuwania wykonuj wyłącznie w wybranym katalogu danych, po sprawdzeniu listy i zasad retencji. Sam wiek kopii zapasowej nie oznacza, że można ją usunąć.
Jak znaleźć pliki starsze niż 30 dni?
Najpierw wyświetl pasujące zwykłe pliki. Przykładowy katalog /srv/archiwum-aplikacji zastąp właściwą, sprawdzoną ścieżką:
find /srv/archiwum-aplikacji -type f -mtime +30 -print
-type f wybiera zwykłe pliki, a -mtime odnosi się do czasu ostatniej modyfikacji ich zawartości. Nie jest to data utworzenia pliku ani czas ostatniego odczytu.
Co dokładnie oznacza -mtime +30?
GNU find liczy pełne okresy po 24 godziny i pomija część ułamkową. Warunek -mtime +30 oznacza więcej niż 30 pełnych takich okresów: w praktyce pasują pliki mające co najmniej 31 dni. Plik sprzed 30 dni i 12 godzin jeszcze nie pasuje.
Jeżeli polityka retencji ma opierać się na granicy 30 dni bez tego zaokrąglenia do pełnych dni, można użyć minut: -mmin +43200. To inny warunek niż -mtime +30; wybierz go świadomie i ponownie sprawdź wyniki.
Usuwanie po sprawdzeniu listy
Gdy lista i katalog są poprawne, użyj tych samych filtrów z akcją -delete na końcu:
find /srv/archiwum-aplikacji -type f -mtime +30 -delete
To polecenie usuwa pasujące pliki również w podkatalogach. Jeżeli interesuje Cię wyłącznie pierwszy poziom katalogu, dodaj -maxdepth 1 bezpośrednio po ścieżce. Domyślnie find nie przechodzi przez dowiązania symboliczne; nie dodawaj -L, jeśli nie chcesz zmieniać tego zachowania.
Jak usunąć tylko pliki o określonym rozszerzeniu?
Przykład dla archiwalnych logów aplikacji: najpierw podgląd, potem identyczny filtr z usuwaniem.
find /srv/archiwum-aplikacji -type f -name '*.log' -mtime +30 -print
find /srv/archiwum-aplikacji -type f -name '*.log' -mtime +30 -delete
Cudzysłowy chronią wzorzec *.log przed rozwinięciem przez powłokę. -name rozróżnia wielkość liter; do dopasowania także .LOG użyj -iname. Działające logi usług systemowych porządkuj ich mechanizmem rotacji, zamiast bezrefleksyjnie usuwać zawartość /var/log.
Jak porządkować stare katalogi bez kasowania nowszych plików?
Data modyfikacji katalogu nie określa wieku wszystkich plików w środku. Połączenie find -type d -mtime ... z rekurencyjnym rm -rf może usunąć również nowszą zawartość. Nie traktuj go jako domyślnej metody retencji.
Rozdziel usuwanie plików według ich własnego wieku od porządkowania pustych katalogów. Po pierwszej operacji sprawdź puste katalogi, pomijając katalog główny:
find /srv/archiwum-aplikacji -depth -mindepth 1 -type d -empty -print
Po kontroli możesz usunąć puste katalogi:
find /srv/archiwum-aplikacji -depth -mindepth 1 -type d -empty -delete
Drugi przebieg może usunąć także katalog nadrzędny, który opróżni się po usunięciu jego pustego podkatalogu. -mindepth 1 chroni sam wskazany katalog główny. Niepuste katalogi z nowszymi plikami pozostają.
Retencja jako element utrzymania serwera
Czyszczenie plików warto połączyć z kontrolą miejsca i możliwością odtworzenia kopii. W ramach administracji serwerami Linux pomagamy dobrać zasady do konkretnej aplikacji i środowiska. Zobacz też opis administracji i wsparcia technicznego GIMMIK.
Powiązany poradnik: trwała zmiana nazwy hosta w Debianie. Dokumentacja polecenia: GNU find – Debian Manpages.