Das Ausführen von Timeshift-Ordnern führt zu unterschiedlichen Ergebnissen

365
Paolo

Mein Ziel ist es herauszufinden, welche Dateien / Ordner in einem snapshotBackup-Tool den meisten Speicherplatz beanspruchen, timeshiftaber bei Verwendung duunterschiedliche Ergebnisse erzielt werden:

# du -hs * 18G 2018-09-21_16-14-57 910M 2018-10-06_07-04-27 

Nur zweiter Ordner

# du -hs 2018-10-06_07-04-27 18G 2018-10-06_07-04-27 

Das Ergebnis, das ich möchte, ist das 910M-Gerät, das ich dann untersuchen möchte, welche Ordner / Dateien den meisten Speicherplatz darin beanspruchen.
Warum gibt dues unterschiedliche Ergebnisse? Wie kann ich das 910M-Ergebnis bohren?

Ich weiß, dass der zweite Ordner voll mit harten Links ist (so funktioniert das Tool), dusollte aber keine unterschiedlichen Größen melden, da der *Ordner einfach auf die tatsächlichen Ordnernamen erweitert wird, oder bash?

Update: Ich habe gerade versucht # du -hd 2 *, einen Schritt in die richtige Richtung zu finden, aber es ist keine vernünftige Lösung, wenn es 20 oder mehr Momentaufnahmenordner gibt und ich nur in einen Drill einsteigen möchte.

1

2 Antworten auf die Frage

1
xenoid

duIgnoriert offensichtlich Inodes, die bereits in anderen von ihm besuchten Verzeichnissen berücksichtigt wurden. Zum Beispiel mit Ihrem Beispiel:

du -hs 2018-09-21_16-14-57 2018-10-06_07-04-27 du -hs 2018-10-06_07-04-27 2018-09-21_16-14-57 

gibt unterschiedliche Ergebnisse.

Aber in Ihrem Fall sollte es keinen großen Unterschied machen. Wenn die Dateien in einem Ordner Inodes mit Mehrfachverknüpfungen entsprechen, ändert das Löschen der Dateien in diesem Ordner nichts. IMHO sollten Sie sich auf Inodes statt auf Verzeichnisse konzentrieren (was bedeutet, dass Sie den -sParameter nicht verwenden du).

0
Kamil Maciorowski

dusollte nicht über unterschiedliche Größen berichten, da der *einfach auf die tatsächlichen Ordnernamen in Bash erweitert wird, oder?

Es sollte immer noch ein duProzess sein und versucht, intelligent zu sein.

Begründung: Wenn du *es nicht schlau wäre, wäre es schwierig, es schlau zu machen. Der andere Weg ist einfach, es ist ziemlich einfach, das intelligente du"dumm" zu machen . Wenn Sie völlig unabhängige Ergebnisse wünschen, führen Sie einfach separate du-s für die beiden Verzeichnisse aus.

Einige allgemeine Beispiele für das Aufrufen von separaten du-s:

for d in *; do du -hs "$d"; done find . -exec du -hs {} \; 

Sie unterscheiden sich in Details. Die findBasis kann angepasst werden (z find . -type d …. B. mit ).

Aktivieren Sie auch die --apparent-sizeOption, wenn Sie dies duunterstützen.

Es ist ein anderes Problem, ob du"Dumm" für Sie nützlich ist oder nicht, da "Sie suchen möchten, welche Dateien / Ordner den meisten Speicherplatz beanspruchen". Die andere Antwort ist richtig:

Wenn die Dateien in einem Ordner Inodes mit Mehrfachverknüpfungen entsprechen, ändert das Löschen der Dateien in diesem Ordner nichts.

Das kluge Verhalten von duscheint Ihren Bedürfnissen mehr zu entsprechen als dem (erzwungenen) "dummen". Mein Rat ist, es zu nutzen und die Tatsache duverarbeitet ihre Argumente in der angegebenen Reihenfolge. Dies bedeutet, dass die gemeldete Größe des allerletzten Objekts diejenige ist, die Sie erhalten, wenn Sie dieses Objekt und nur dieses Objekt entfernen (es sei denn, es enthält Hardlinks zu einem anderen Ort, an dem dieses Objekt dunicht gesehen hat).

In Ihrem Beispiel lautete der erweiterte Befehl anscheinend:

du -hs 2018-09-21_16-14-57 2018-10-06_07-04-27 

Das Ergebnis sagt, dass Sie erhalten, 910Mwenn Sie nur entfernen 2018-10-06_07-04-27. Versuchen Sie jetzt eine andere Sequenz:

du -hs 2018-10-06_07-04-27 2018-09-21_16-14-57 

In der letzten Zeile der Ausgabe erfahren Sie, wie viel Speicherplatz Sie erhalten, wenn Sie 2018-09-21_16-14-57nur entfernen .

Wenn ich Sie wäre, würde ich auch das ncduinteraktive Werkzeug und dessen Verhalten untersuchen.