Laatst bijgewerkt op 6 sep 2023 13:14:56.
Categorie:
Cloud servers
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?
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.
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/
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!
Werden niet al uw vragen beantwoord?
Geen nood, via een support aanvraag helpen wij u graag verder!