Ich muss die ältesten Dateien mit den zugehörigen Verzeichnissen in einem 90-TB-Dateisystem mit bis zu 50 TB finden und sie dann in ein anderes Dateisystem verschieben. Sie müssen ihre Verzeichnisstruktur beibehalten, da dies die Dateien identifiziert. Damit -
erste Ebene / zweite Ebene / dritte Ebene / (Datei)
ist die Struktur. Ich muss die gesamte Struktur verschieben - es gibt nichts in den Verzeichnissen der obersten Ebene, aber ohne sie kann ich nicht identifizieren, zu was die Datei gehört, da alle Dateien, die ich suche, denselben Namen haben. Wenn der Vorgang abgeschlossen ist, sollte ich ungefähr 40 TB im ursprünglichen Dateisystem übrig haben und fast nichts im neuen Dateisystem übrig haben, da die ältesten Dateien im Original jetzt da sind.
Vielen Dank!
total_size > max { exit 0 }
dem awk-Skript eine hinzugefügt hätte )50 * 2^40
). Sie können es auch dahingehend ändern,total_size += $2 + overhead
wooverhead
der Overhead definiert ist, der diesen Ordnern entsteht. Siehe auch%k
anstatt%s
die Festplattennutzung in KiB abzurufen.Der Befehl 'ls' ist mit Zeitstempeln etwas kreativ - daher kann das Parsen schmerzhaft sein. Es wäre wahrscheinlich viel einfacher, dies in einer Sprache zu implementieren, die stat () implementiert . Einige Unix-Versionen verfügen über eine Befehlszeilenstatistik - auf einer nahe gelegenen RH-Box:
Aber das läuft wie ein Hund mit einer großen Anzahl von Dateien.
Die Dokumentation für GNU awk enthält eine Beispielerweiterung mit Dateisystemfunktionen. Sie müssen jedoch einige Arbeiten ausführen, um diese zu erstellen und zu warten.
Das Schreiben eines Programms von Grund auf in PHP, C oder Perl (oder go, ruby oder vielen anderen Sprachen) wäre unkompliziert, würde jedoch den Rahmen eines Beitrags hier sprengen.
quelle
stat
lang wurde hinzugefügt , nachdem GNUfind
einen hatte-printf
Befehl (das die gleichen wie GNU tun kann ,stat
mit einer viel besseren Schnittstelle).