Gleicher Ordnerinhalt, aber unterschiedliche Größen auf unterschiedlichen Laufwerken, warum?

Gleicher Ordnerinhalt, aber unterschiedliche Größen auf unterschiedlichen Laufwerken, warum?

Ich habe drei Kopien desselben Ordners, aber die Größen sind unterschiedlich. Warum?

Ich habe einen Ordner „Dokumente“, den ich von einem verschlüsselten LVM auf der Festplatte meines Desktops auf eine verschlüsselte Luks-Partition auf einem externen Laufwerk kopiert habe. Anschließend habe ich diesen Ordner vom externen Laufwerk auf ein verschlüsseltes LVM auf der Festplatte meines Laptops kopiert.

Ich habe also drei Kopien desselben Ordners:

  • Desktop
  • Externes Laufwerk
  • Laptop

Ich habe diffzwischen Desktop- und externem Laufwerk gewechselt --> keine Unterschiede.

Ich habe es diffzwischen Laptop und externem Laufwerk versucht --> keine Unterschiede.

Allerdings habe ich für die drei Fälle unterschiedliche Ordnergrößen.

Ich habe benutzt

du -bs --apparent-size Documents

um die Größen zu messen. Hier sind die Ergebnisse:

  • Desktop-Computer: 1735750760
  • Externes Laufwerk: 1735742568
  • Laptop: 1735746664

Wir stellen also fest, dass es einen kleinen Unterschied zwischen den Größen gibt. Ein kleiner Unterschied, aber immerhin vorhanden. Ich habe mich gefragt, warum das so ist. Haben Sie eine Erklärung?

Antwort1

Möglicherweise ist Ihnen aufgefallen, dass die Unterschiede zwischen den verschiedenen Ordnern folgende sind:

    Desktop:        1735750760
                  -       8192
    External drive: 1735742568  
                  +       4096  
    Laptop:         1735746664  

Solche Unterschiede von 4K-Blöcken resultieren meiner Erfahrung nach meist aus Änderungen der Verzeichnisgrößen. Vergleicht man die Größen der Verzeichnisse selbst (auf Ext-Dateisystemen meist Vielfache von 4K), findet man den Unterschied vielleicht.
(Beispielsweise werden Verzeichnisse manchmal kleiner, wenn sie bei einem Kopiervorgang umstrukturiert werden und gelöschte Einträge dabei wegfallen)

Um Verzeichnisse unterschiedlicher Größe zu finden, müssen Sie die Verzeichnisse miteinander vergleichen. Das folgende Skript kann Ihnen dabei helfen:

#!/bin/bash
DIR1="${1%/}/"
DIR2="${2%/}/"

diff \
  <(find $DIR1 -type d -printf "%k %p\n" | sed -e "s|$DIR1||" | sort -k2) \
  <(find $DIR2 -type d -printf "%k %p\n" | sed -e "s|$DIR2||" | sort -k2)

Kopiere den Code in eine neue Datei (z.B. dircomp.sh) und mache ihn ausführbar chmod +x dircomp.sh. Rufe ihn dann so auf ./dircomp.sh /home/lemenhir/ /media/lemenhir/ExternalDrive/:

Die Ausgabe sollte nun nur noch Verzeichnisse mit unterschiedlichen Größen auflisten und könnte wie folgt aussehen:

< 4 Documents/Appartement/Bail
> 8 Documents/Appartement/Bail

wobei die mit beginnenden Zeilen <die Verzeichnisse auflisten, die sich im als erster Parameter angegebenen Verzeichnis befinden (z. B. /home/lemenhir/), und die mit beginnenden Zeilen >die Verzeichnisse auflisten, die sich im als zweiter Parameter angegebenen Verzeichnis befinden (z. B. /media/lemenhir/ExternalDrive/).

Wenn einzelne Zeilen erscheinen, dann existiert das Verzeichnis im gegenüberliegenden Verzeichnis nicht.

Hoffe das hilft.

verwandte Informationen