Usuwanie plików starszych niż X dni

Poradniki społeczności
zarządzanie
KrEdEnS
KrEdEnS Moderator Freebies

Cześć, dzisiaj przedstawię wam mały skrypt bash, który usuwa pliki starsze niż X dni o danej godzinie lub w danym dniu, ewentualnie co kilka minut. Możemy to wykorzystać np do usuwania starych backupów z poradnika: https://lvlup.rok.ovh/t/tworzenie-kopii-zapasowej-wyznaczonego-folderu-z-cyklicznym-powtarzaniem/8443

Skrypt: find ścieżka_do_plików -mtime +ilość_dni -exec rm {} \;

Przykłada użycia: find /home/backup/minecraft/ -mtime +7 -exec rm {} \;

Uprawnienia: chmod 700 nazwaskryptu.sh

Jeżeli chcemy, żeby skrypt sam się uruchamiał należy dodać go do crona, (wpisujemy w terminalu):

crontab -e

Następnie dopisujemy to w pliku, który otworzyliśmy poleceniem wyżej:

00 13 * * * /sciezka_do_skryptu/nazwaskryptu.sh

Dzięki temu nasz skrypt uruchomi się każdego dnia o godzinie 13:00 :slight_smile:

Poniżej zamieszczam wyjaśnienie jak działa ustawienie konkretnej godziny, czy dnia:

---------------------------------------------------------------------------------------------------------------------------------------------------------------
*     *     *     *     *  komenda do wykonania
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- dzień tygodnia (0 - 7) (niedziela=0, poniedziałek=1, wtorek=2, ..., niedziela=7) (niedziela może być przedstawiona jako 0 lub 7)
|     |     |     |
|     |     |     +------- miesiąc (1 - 12)
|     |     |   
|     |     +--------- dzień miesiąca (1 - 31)
|     |  
|     +----------- godzina (0 - 23)
|   
+------------- minuta (0 - 59)

Możemy także stosować:
- * - zawsze (każda minuta, każda godzina, każdy dzień, każdy miesiąc, każdy dzień tygodnia)
- Zakres: x-y – czyli od „x” do „y”, np. „1-5” to każda minuta/godzina/dzień/miesiąc od 1 do 5
- Przerwa: */x – np. „*/8” to polecenie wykonane co 8 minut/godzin/dni…
- Kolejne wartości: x,y,z – np. „2,5,8” może oznaczać polecenie wykonane w 2, 5 i 8 minucie/godzinie…
- Wiele zadań w jednym wpisie:  ;  rozdzielamy polecenia
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Kamilkime
Kamilkime Regularny

KrEdEnS:

czy dania:

Literówka, ale poza tym fajny i prosty sposób, przynajmniej dla mnie jako osoby, która zna ledwo podstawy obsługi linuxa :)

KrEdEnS
KrEdEnS Moderator Freebies

W sumie to można jeszcze usuwać z rozszerzeniem

find < ścieżka do plików > -name '*.< rozszerzenie >' -ctime +< ilość dni > -delete

Dudix
Dudix

KrEdEnS:

find < ścieżka do plików > -name ‘*.< rozszerzenie >’ -ctime +< ilość dni > -delete

find /home/minecraft -name ‘*.log’ -ctime +1 -delete

Dobrze :)?

KrEdEnS
KrEdEnS Moderator Freebies

testuj ;)

Dudix
Dudix

cos wlasnie nie dziala :(

KrEdEnS
KrEdEnS Moderator Freebies

KrEdEnS:

find /home/backup/minecraft/ -mtime +7 -exec rm {} ;

użyj tego @Dudix

Lumpiasty
Lumpiasty Stały bywalec

Dudix:

usunięcie wszystkich plików .log starsze niż 1dzien

Głupotę robisz, jak ci je będzie trzeba zrozumiesz dlaczego. To nie jest rozwiązanie na śmietnik w logach.

find /Home/Minecraft -name *.log -mtime +1 -exec rm {} \;

swoją drogą to nie zadziała

KrEdEnS
KrEdEnS Moderator Freebies

Aaaa faktycznie wklejanie kodu na lvlup zjadło
Musi być przed ; SmartSelect_20200123-114104_Chrome|264x169 Fajnie, że jest napisane a forum zjada. Halo niech ktoś nakarmi forum :)

Komenda: https://haste.kredens.ovh/ledilihoro.bash

aggankx
aggankx

Może się nie znam ale raczej jeżeli serwer się wyłącza to coś jest nie tak i zamiast automatycznie usuwać logi nie lepiej je przejrzeć i rozwiązać problem?

Dudix
Dudix

błąd jest taki, ze jeżeli serwer jest wyłączony a screen chce odpalić serwer pisze w logach ze za mało miejsca w ramie. tak czy siak nadal działa serwer bez problemow.