Come compattare una directory


21

Ogni tanto, alcune applicazioni vengono eseguite in modo selvaggio e riempiono una directory con un'enorme quantità di file. Una volta risolto il bug e ripulito i file, la directory rimane grande (> 50 MB) anche se contiene solo 20-30 file.

Esiste un comando che compatta una directory senza doverlo ricreare?

Punti bonus: un'enorme directory vuota influisce sulle prestazioni di accesso di quella directory? Suppongo che lo faccia, ma forse non vale la pena preoccuparsi. Sembra più lento da fare lssu una tale directory.


Non penso che esista una cosa del genere (ma ovviamente potrei sbagliarmi completamente). Forse alcuni strumenti specifici del filesystem - quale FS stai usando?
Mat

ext3, ma ho riscontrato questo problema sulla maggior parte dei filesystem con cui ho avuto a che fare nel mondo Unix. Non penso che esista un simile strumento, ma vorrei essere smentito.
Mathieu Longtin,

4
Ho taggato la tua domanda "ext3" poiché questa domanda è molto specifica per il filesystem. Non conosco la risposta per ext3 (sospetto che sia necessario ricreare la directory per farla restringere) ma hai provato a forzare un fsck? ext3 fsckha un pass "Ottimizzazione della directory". Non so che cosa faccia, ma forse restringe le directory troppo grandi? Ad ogni modo, come punto dati FWIW, xfs esegue automaticamente la ridefinizione delle directory alle quali sono stati rimossi dei file.
Celada,

Hai cancellato per caso file aperti?
Karlson,

1
ufs su BSD e Mac HFS riducono al volo anche le directory. Sono sorpreso di apprendere che ext3 no. ext4 non sembra farlo neanche.
Kyle Jones,

Risposte:


10

Si esegue e2fsck -Dsul filesystem non montato.


1
Speravo in qualcosa di meno dirompente.
Mathieu Longtin,

1
@MathieuLongtin, puoi anche spostare tutto in una nuova directory, eliminare quella vecchia e rinominare quella nuova.
psusi,

Conoscevo quel trucco, ma può rovinare i processi usando la directory come directory di lavoro corrente.
Mathieu Longtin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.