GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verzeichnisgröße verkleinern/zurücksetzen?

Lösung 1:

Siehe auch rm in einem Verzeichnis mit Millionen von Dateien; tangential verwandt, aber wir besprechen es dort.

Soweit mir bekannt ist, gibt es zumindest auf ext2/3 keine (Online-)Möglichkeit, sie kurz vor Löschen + Neu erstellen zu verkleinern. Unmounted, mehrere Quellen empfehlen e2fsck -D könnte funktionieren, obwohl ich keine persönlichen Erfahrungen mit dieser Option machen kann.

Einige Referenzen zum Weiterlesen:

  • http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-05/threads.html#06569
  • http://fedoraforum.org/forum/showthread.php?t=120654

Lösung 2:

Ich musste kürzlich ein NFS-Verzeichnis löschen und neu erstellen, um seine Größe zu verringern, nachdem es zuvor aufgebläht war. Dabei habe ich einen ziemlich effizienten Weg gefunden, dies mit rsync und harten Links zu tun. Diese Methode vermeidet das Kopieren der eigentlichen Dateien, erreicht aber dennoch das Ziel, das Verzeichnis mit demselben Inhalt neu zu erstellen.

Da wir für diesen Vorgang während unseres Wartungsfensters eine Ausfallzeit in Anspruch nehmen mussten, war es für uns wichtig, das neu erstellte Verzeichnis so schnell wie möglich verfügbar zu machen. Wenn Ihnen die Einfachheit wichtiger ist, ändern Sie den ersten Befehl zum Verschieben in ein 'rm -rf' im Quellverzeichnis und überspringen Sie den anderen 'rm -rf'-Befehl.

Ich habe diese Befehle aus einem größeren Prozess extrahiert und die Verzeichnisnamen abstrahiert, also entschuldigen Sie, wenn ich bei dieser Übersetzung einen Fehler gemacht habe.

mkdir /tmp/holding_dir/
rsync -ai --delete --link-dest=/path/to/source_dir/ /path/to/source_dir/ /tmp/holding_dir/
mv /path/to/source_dir/ /tmp/deleteme/
mv /tmp/holding_dir/ /path/to/source_dir/

Später entfernen wir dann das Verzeichnis. Abhängig von der Größe müssen Sie möglicherweise eine ausgefeiltere Technik anwenden, um dies zu tun. Beispielsweise kann es effizienter sein, rsync mit dem Flag --delete zu verwenden, um ein leeres Verzeichnis in dieses Verzeichnis zu synchronisieren.

rm -rf /tmp/deleteme/

Lösung 3:

Ich würde es so machen.

cp -al Alter neues Verzeichnis && mv altes Verzeichnis tempname && mv neues Verzeichnis altes Verzeichnis && rm -r tempname

wo olddir ist das Verzeichnis, das Sie newdir verkleinern möchten und tempname sind temporäre Dateinamen

cp -al erstellt Links zum Inhalt von olddir im neuen Verzeichnis und die nächsten drei Befehle tauschen sie mit newdir aus und bereinigen.


Linux
  1. Was bedeutet die Größe eines Verzeichnisses in der Ausgabe des Befehls „ls -l“?

  2. Linux – Wie kombiniere ich den Baum mit der Verzeichnisgröße?

  3. Überprüfen der Verzeichnisgröße mit dem Befehl du unter Linux

  4. Zurücksetzen eines Active Directory-Benutzerkennworts

  5. So erhalten Sie die Verzeichnisgröße in Linux

So erhalten Sie die Größe eines Verzeichnisses in Linux

So erhalten Sie die Größe eines Verzeichnisses in Linux

So ermitteln Sie die Größe eines Verzeichnisses in Linux

So ermitteln Sie die Gesamtgröße eines Verzeichnisses in Linux

So setzen Sie das Passwort des Weblogic-Administratorbenutzers zurück

So überprüfen Sie die Größe von Dateien und Verzeichnissen unter Linux