Un modo più veloce per cancellare milioni di file in una directory su Linux

Avete mai provato ad eseguire “rm -rf” su una directory piena di tante sottodirectory e piccoli files, come può essere per esempio quella della cache di mod_pagespeed? L’operazione è drammaticamente lenta, in pratica perché cancellando ricorsivamente un albero di directory viene eseguito un fork per ogni file o directory da cancellare. Questa mattina ho voluto cercare una via diversa, e l’ho trovata: pensate, coinvolge rsync (ah, quanto lo adoro!).

Il ragionamento è un po’ contorto, ma i risultati sono stupefacenti. In pratica prima bisogna creare una directory vuota, poi bisogna usare questa directory vuota come sorgente per una sincronizzazione in cui i file nella destinazione vengono eliminati: dato che la sorgente è vuota riusciremo a svuotare la nostra directory con dei tempi che con un semplice “rm -rf” ci possiamo solo sognare. Si vedano i benchmark.

I comandi da dare:

mkdir dir_vuota
rsync -av --delete dir_vuota/ dir_da_svuotare/

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Applicazioni

%d blogger hanno fatto clic su Mi Piace per questo: