Löschen von Verzeichnissen mit vielen Hardlinks

Löschen von Verzeichnissen mit vielen Hardlinks

Ich versuche, ein Verzeichnis zu bereinigen, das viele Daten enthält (mehr als 1 TB), wobei viele der Dateien aus Platzgründen fest verknüpft sind. Zum Kontext: Dies ist das Laufwerk, auf dem wir unsere Builds speichern, und wir haben in jedem Build viele Medien (mehrere GB), sodass wir eine Datei fest verknüpfen, wenn sie mit einem vorherigen Build-Produkt identisch ist. Mir ist aufgefallen, dass der Versuch, diese Verzeichnisse zu löschen, außerordentlich langsam ist (~5 Elemente pro Sekunde).

Ich vermute, dass das Löschen so lange dauert, weil es so viele Hardlinks zu jeder Datei gibt. Kann ich diesen Vorgang irgendwie beschleunigen oder muss ich mehrere Millionen Elemente mit 5 pro Sekunde löschen?

Antwort1

find . -inum [inode-number] -exec rm -i {} \;

Dieser Befehl findet die Inode-Nummer, die Sie dann entfernen können, wodurch die referenzierten Daten freigegeben werden.

Ich habe die interaktive Flagge angegeben, damit Sie sie testen können.

Oh, um die Inode-Nummer zu erhalten, können Sie Folgendes tun, ls -ilwodurch der Name und die Inode-Nummer zusammen zurückgegeben werden.

Wenn Sie die Datei direkt per Inode entfernen könnten, wäre das eine Verbesserung, aber ich kenne keine Möglichkeit, das zu tun.

verwandte Informationen