Ich habe in so vielen Websites gelesen, dass symbolische Links (Softlinks, Symlinks) in Linux genauso sind wie Zeiger , die auf eine andere Datei verweisen, die sich möglicherweise irgendwo befindet (wie Windows-Verknüpfungen). Wenn ich jedoch die Datenträgerverwendung eines Ordners überprüfe, in dem symbolische Verknüpfungen vorhanden sind, stimmen die du
Angaben meines Dateimanagers und die Berichte nicht überein. Wenn ich jedoch du -L
( -L, --dereference; dereference all symbolic links
von der Manpage) eingebe, sind die Ausgabe von du -L
und die Größe, die mein Dateimanager meldet, gleich .
Meine Frage ist : Wenn ich einen Softlink zu einer großen Datei in meiner separatenhome
Partition habe, habe ich dann Probleme?
Beispiel :
Mein /var/tmp
Ordner ist jetzt leer. Lassen Sie uns eine Datei erstellen:
$ cat /some/file.txt > file.txt
$ du -ac
164 ./file.txt
168 .
168 total
Und mein Dateimanager (in diesem Fall Thunar) berichtet
Größe: 1 Stück, insgesamt 163,0 kB
Gut. Jetzt erstellen wir eine wirklich große Datei /tmp
und einen Symlink dazu:
$ cat /dir/really_big.txt > /tmp/heavy.txt
$ du -a | grep heavy.txt
408 ./heavy.txt
$ ln -s /tmp/heavy.txt heavy.txt
$ du -ac
164 ./file.txt
0 ./heavy.txt
168 .
168 total
Alles ist in Ordnung für jetzt. Aber wenn ich meinen Dateimanager öffne:
Größe: 2 Elemente, insgesamt 570,3 kB
Und schlussendlich:
$ du -acL
164 ./file.txt
408 ./heavy.txt
576 .
576 total
Wenn die Partition, in der /var/tmp
sich die Partition befindet, 1 GB groß ist und ich darin einen Link zu einer 1 GB-Datei erstelle, wird meine Festplatte sterben? Ich weiß, dass du
168 und Thunar 1 GiB ausgegeben werden, aber ich weiß nicht, welches richtig ist.
quelle
Antworten:
Symbolische Verknüpfungen nehmen natürlich Platz ein, aber nur den Platz, der zum Speichern des Namens und des Ziels sowie einiger Bytes für andere Metadaten benötigt wird. Der Platz, den ein symbolischer Link einnimmt, hängt nicht vom Platz ab, den das Ziel einnimmt (schließlich muss das Ziel nicht einmal existieren).
Plain gibt
du
den von einem Verzeichnisbaum auf der Festplatte belegten Speicherplatz an.du -L
gibt den Speicherplatz an, der von einem Verzeichnisbaum belegt würde, wenn alle symbolischen Links durch ihr Ziel ersetzt würden. Ersteres ist normalerweise die nützliche Information; Dies ist beispielsweise der Speicherplatz, den Sie wiederherstellen würden, wenn Sie den Baum gelöscht hätten, und (ungefähr) der Speicherplatz, den Sie zum Sichern des Baums benötigen.du
In einem Verzeichnisbaum wird (normalerweise) etwas mehr als die Summe der Dateigrößen angezeigt. Das liegt an zwei Dingen. Erstens werdendu
auch Verzeichnisse gezählt, die etwas Platz zum Speichern von Dateinamen und Metadaten benötigen. Zweitens wirddu
der von einer Datei belegte Speicherplatz gezählt, der sich von der Dateigröße unterscheiden kann. Der häufigste Effekt besteht darin, dass Dateien eine ganzzahlige Anzahl von Blöcken belegen (4 KB bei einer typischen Linux-Installation), also eine 1-Byte-Datei zeige als 4kB in du output; Durch die Komprimierung (z. B. der primitiven Form, die von spärlichen Dateien auf nahezu jedem Unix-Dateisystem bereitgestellt wird ) kann die Dateigröße jedoch über die Festplattenbelegung hinausgehen.Aus den von Ihnen angegebenen Zahlen geht hervor, dass Thunar die Summe der Dateigrößen im Verzeichnisbaum unter Verwendung symbolischer Links angibt . Das wird auf subtile Weise gesagt - es wird behauptet, dass die Gesamtgröße 570,3 kB beträgt, nicht, dass die Festplattennutzung 570,3 kB beträgt. Aus der Benutzeroberfläche oder Dokumentation geht überhaupt nicht hervor, dass Thunar bei der Berechnung der Größe symbolischen Verknüpfungen folgt.
Welches „richtig“ ist, ist eine subjektive Angelegenheit.
du
meldet die Datenträgernutzung. Thunar meldet die Gesamtgröße nach symbolischen Links. Das Erstellen einer symbolischen Verknüpfung hat keine nennenswerten Auswirkungen auf die Datenträgernutzung. Per Definition ändert sich jedoch die Gesamtgröße der symbolischen Verknüpfungen, die Thunar meldet.quelle
du
zeigt die Festplattennutzung, während Thunar etwas anderes anzeigt.Ich denke, dass Ihr Dateimanager standardmäßig versucht, die Größe der Dateien zu ermitteln, auf die die Softlinks verweisen, wohingegen
du
Sie die Größe des Verzeichnisses und der Softlinks selbst angeben, aber nicht die Dateien, auf die sie verweisen.Zu klären,
Ich bin mir nicht sicher, ob Sie dies gefragt haben, aber wenn ja, dann glaube ich, könnte dies die Antwort auf Ihre Frage sein.
quelle