Efficiënt veel bestanden verwijderen op Linux servers

Laatst bijgewerkt op 6 sep. 2023 13:14:56.
Categorie: Cloud servers

CentOS Debian Linux

We hebben het allemaal wel eens voor: een of ander op hol geslagen script bezorgt hoofdpijn omdat een map - typisch, sessies - volgeschreven werd met miljoenen bestanden. Linux is daar niet echt blij mee, de map verwijderen is geen optie en het trouwe "rm -rf" commando lijkt er ook de brui aan te geven. Om het nog erger te maken: u wil enkel bestanden verwijderen van een paar dagen geleden... Wat zijn de opties?

Find is you friend

Het Linux "find" commando is een mogelijke oplossing. Spontaan zullen velen grijpen naar:

find /yourmagicmap/* -type f -mtime +3 -exec rm -f {} \;

Bovenstaand commando zal een lijst genereren van bestanden ouder dan drie dagen en elk gevonden bestand doorgeven aan het rm commando. Met bovenstaande regel is echter één probleem: het zal tijd vragen, want een miljoen keer het rm commando aanroepen is ook niet wat men efficiënt kan noemen.

Een betere optie is onderstaande commando:

 find /yourmagicmap/* -type f -mtime +3 -delete

Daarmee geef je het find commando meteen de opdracht om dit alles ook weg te gooien. Maak er meteen een goede gewoonte van en plaats het in een cronjob, als dit op frequente basis moet gebeuren.

Het rsync alternatief!

rsync is zonder twijfel een van de handigste commandos als het op bestandsacties aankomt. Rsync kan uiteraard alle mogelijke synchronisaties van volumes afhandelen, maar er is ook een manier om via rsync een map leeg te maken.
We gaan er in dit voorbeeld van uit dat u beschikt over een map genaamd /tmp/empty/ welke leeg is, en een map /tmp/session/ waar teveel rommel in staat. Via onderstaande regel kan u de bestanden verwijderen:

rsync -a --delete /tmp/empty /tmp/session/

Welk is nu het sneltste commando?

rm: massa's bestanden verwijderen is geen optie!

find -exec: een optie, maar traag!

find -delete: snelle manier om massa's bestanden te verwijderen.

rsync --delete: zonder twijfel de snelste!


Gerelateerde artikels

Extra hulp nodig?

Werden niet al uw vragen beantwoord?
Geen nood, via een support aanvraag helpen wij u graag verder!

Selecteer uw taal

Alle talen: