Ich verkleinere eine Linux-SD-Kartenpartition mithilfe von AOakleys toller Anleitung. Ich versuche, es zu automatisieren, aber es scheint kein Befehlszeilentool zu geben, mit dem man die Anzahl der in einer Partition verwendeten Bytes bestimmen kann.
Beispielsweise teilt mir gparted mit, dass 1,88 GB von 6,99 GB Speicherplatz belegt sind (beachten Sie, dass ich /dev/loop0 verwende, das in der zweiten Partition von /dev/sdb gemountet ist):
df
ist falsch:
% df /dev/loop0
Filesystem ... Use%
udev ... 0%
... und fdisk
drucken parted
Sie keinen belegten Speicherplatz aus.
Welche Befehlszeilenoption kann ich verwenden, um den belegten Speicherplatz einer Partition zu ermitteln gparted
?
ANTWORT: Zusammenfassung von unten: Die Partition ist ext4
, die es mir ermöglicht, Folgendes zu verwenden dumpe2fs
und zu extrahieren: free blocks
, block count
(insgesamt) und block size
die so kombiniert werden kann, dass sie genau übereinstimmt gparted
. Es stellt sich heraus, dass dies resize2fs
die Fragmentierung während der Verkleinerung handhabt. Weitere Informationen finden Sie auf der Manpage ext4
(obwohl der Manpage-Editor ein wenig verbittert ist, was GiB vs. GB angeht! :)
Antwort1
df
ist fast das richtige Tool, aber Sie sollten den Einhängepunkt (oder eine beliebige Datei darunter) abfragen, der zu dem Dateisystem gehört, das Sie untersuchen möchten, nicht den Geräteknoten. Der von Ihnen verwendete Knoten, , /dev/loop0
ist eine spezielle Datei, die zum virtuellen Dateisystem gehört udev
; daher haben Sie udev
.
Mounten Sie /dev/loop0
(oder /dev/sdb2
, ich bin nicht sicher, warum das nötig ist /dev/loop0
) irgendwo (es kann ro
mount sein) und rufen Sie auf df /the/mountpoint
. Dann df
wird Ihnen angezeigt, was das Dateisystem über sich selbst meldet.
Ich sagte: " df
istfastdas richtige Tool", da es keine Garantie dafür gibt, dass Sie das Dateisystem (und später die Partition) auf die vom Tool gemeldete Größe verkleinern können. Was df
ausgegeben wird, kann Ihre erste (oder eher nullte) Schätzung sein.
Sie benötigen unterschiedliche Tools, um die Größe verschiedener Feldsysteme zu ändern. In einer perfekten Welt kann Ihnen ein solches Tool (oder ein begleitendes Tool) die minimal mögliche Größe oder zumindest die minimale Größe nennen, bei der die Größenänderung sicher erfolgreich ist. In der Realität kann Ihnen Folgendes begegnen:
Bekannte Fehler:
Die von geschätzte Mindestgröße des Dateisystemsresize2fs
ist möglicherweise falsch, insbesondere bei Dateisystemen mit Blockgrößen von 1 KB und 2 KB.
(Quelle)
gparted
verwendet dateisystemspezifische Tools. Ich habe es mit ausgeführt strace
und keine Hinweise darauf gesehen, dass es verwendet df
. Ich habe btrfs filesystem show …
, dumpe2fs …
, … gesehen.
Zusammenfassung:
- Sie haben
df
es falsch verwendet. - Es ist sowieso besser, ein auf das Dateisystem zugeschnittenes Tool zu verwenden
gparted
. Ich kann Ihnen nicht sagen, welches Tool Sie verwenden sollten, da Sie das betreffende Dateisystem nicht angegeben haben.