du vs. ls vs. Nautilus Dateigroesse

lockdoc

Well-Known Member
Hallo,

ich habe ein Downloadverzeichnis, welches, wenn ich auf der Shell mal "du" mache folgendes kommt:
Code:
user> du -hd0
219M	.

Jetzt im selben Verzeichnis mal der Vergleich mit ls
Code:
user> ls -l | wc -l
     178

user> ls -lh
...
<der rest mal gecutted um es nicht so lang zu machen>
...
-rw-rw-r--  1 pantu  1002    27M May 21 08:02 urn_ed2k_...
-rw-rw-r--  1 pantu  1002    16M May 21 07:09 urn_ed2k_...
-rw-rw-r--  1 pantu  1002   8.9M May 21 07:07 urn_ed2k_...
-rw-rw-r--  1 pantu  1002    27M May 21 08:02 urn_ed2k_...
-rw-rw-r--  1 pantu  1002   8.9M May 21 07:08 urn_ed2k_...
-rw-rw-r--  1 pantu  1002   9.1M May 21 07:07 urn_ed2k_...
-rw-rw-r--  1 pantu  1002   [COLOR="Red"]1.4G[/COLOR] May 21 08:00 urn_ed2k_...
-rw-rw-r--  1 pantu  1002   [COLOR="red"]242M[/COLOR] May 21 07:57 urn_ed2k_...

Wenn ich Nautilus befrage und ein rechtsklick auf das Verzeichnis mache, dann sagt mir:
Code:
Name:		tmp
Type:		folder (inode/directory)
Contents:	177 items, totalling 28,3 GB

Natuerlich liegt Nautilus da voellig falsch mit seiner Groessenangabe, und auch ls schaetzt die Groessen der einzelnen Datein komplett falsch ein. Schaetzen wuerde ich, dass du mit seiner Groesse richtig liegt.

Die Frage ist, warum bekomme ich hier unterschiedliche Ergebnisse???
 
Also ich habe ja keine Dateien geloescht. Die sind ja alle noch vorhanden, nur werden sie halt insgesamt anders interpretiert.

Ausserdem bleibt das Problem auch nach einem kompletten Systemneustart, also liegt es nicht daran, dass noch irgendwelche Programme darauf zugreifen.

Edit: Und das Nautilus mir sagt, ich nutze 28GB, ist mir echt ein Raetsel. Meine Partition ist grade mal 35GB gross und es sind davon locker 25GB fuer andere Sachen in Benutzung, darum kann der Ordner gar nicht so gross sein
 
Zuletzt bearbeitet:
Wenn die Dateien Loecher drin haben, koennte das die unterschiedliche Ausgabe von du und ls erklaeren. Dein Download-Programm wird dann zu Anfang ne Datei von zb 1.4GB anlegen ohne da zunaechst was reinzuschreiben. Da wird dann erst Speicher auf der Festplatte allokiert fuer die Bloecke in denen tatsaechlich Daten gespeichert werden. Und du wird wohl messen wieviel davon belegt ist; du gibt ja auch immer die Anzahl der belegten Bloecke aus anstatt die genaue Dateigroesse anzuzeigen.
 
@ernst
Daran hatte ich noch gar nicht gedacht, danke.

Das ist dann aber sehr verwirrend. Ich sollte dann, von den jeweiligen Programmen, mit denen ich die Groesse checke eine Ausgabe bekommen wie "tatsaechliche Groesse" und "allokierte Groesse", weil sonst kann ich ja mit dem Output gar nichts anfangen.
 
du gibt dir die tatsächlich auf der Platte verbrauchte Größe aus, sei sie größer oder kleiner als die von ls angezeigte.
 
in dubio pro stat(1)
das hast du noch nicht im Vergleich dabei.

Es sollte pro Datei den gleichen Wert zeigen, den auch ls -l liefert.
Bei Bedarf kannst du die einzelnen Werte addieren. Ich glaube, dass du irgendwas anders macht und hatte damit auch nie so richtig Glück.
 
Zurück
Oben