So komprimieren Sie ein Verzeichnis

21

Von Zeit zu Zeit läuft eine Anwendung wild und füllt ein Verzeichnis mit einer großen Anzahl von Dateien. Sobald wir den Fehler behoben und die Dateien bereinigt haben, bleibt das Verzeichnis groß (> 50 MB), obwohl es nur 20 bis 30 Dateien enthält.

Gibt es einen Befehl, der ein Verzeichnis komprimiert, ohne es neu erstellen zu müssen?

Bonuspunkte: Beeinträchtigt ein riesiges leeres Verzeichnis die Zugriffsleistung dieses Verzeichnisses? Ich gehe davon aus, dass es das tut, aber vielleicht lohnt es sich nicht, sich darum zu kümmern. In lseinem solchen Verzeichnis scheint es langsamer zu gehen .

Mathieu Longtin
quelle
Ich glaube nicht, dass es so etwas gibt (aber ich könnte mich natürlich völlig irren). Vielleicht einige dateisystemspezifische Tools - welches FS verwenden Sie?
Mat
ext3, aber ich habe dieses Problem auf den meisten Dateisystemen gesehen, mit denen ich mich in der Unix-Welt befasst habe. Ich glaube auch nicht, dass es so ein Tool gibt, aber ich würde gerne das Gegenteil beweisen.
Mathieu Longtin
4
Ich habe Ihre Frage mit "ext3" markiert, da diese Frage sehr dateisystemspezifisch ist. Ich kenne die Antwort für ext3 nicht (ich vermute, Sie müssen das Verzeichnis neu erstellen, damit es verkleinert wird), aber haben Sie versucht, eine zu erzwingen fsck? ext3 fsckhat einen "Optimizing directory" -Pass. Ich weiß nicht, was das bewirkt, aber vielleicht werden dadurch zu große Verzeichnisse verkleinert? Jedenfalls verkleinert xfs als Datenpunkt-FWIW Verzeichnisse, aus denen Dateien entfernt wurden.
Celada
Haben Sie zufällig offene Dateien gelöscht?
Karlson
1
ufs on the BSDs und Mac HFS verkleinern Verzeichnisse auch on the fly. Ich bin überrascht zu erfahren, dass ext3 dies nicht tut. ext4 scheint es auch nicht zu tun.
Kyle Jones

Antworten:

10

Sie laufen e2fsck -Dauf dem nicht gemounteten Dateisystem.

Psusi
quelle
1
Ich hoffte auf etwas weniger störendes.
Mathieu Longtin
1
@MathieuLongtin, Sie können auch alles in ein neues Verzeichnis verschieben, das alte löschen und das neue wieder umbenennen.
Psusi
Ich wusste über diesen Trick Bescheid, aber er kann Prozesse durcheinander bringen, wenn das Verzeichnis als aktuelles Arbeitsverzeichnis verwendet wird.
Mathieu Longtin