Я уменьшаю раздел Linux SDCard, используя замечательное руководство AOakley. Я пытаюсь автоматизировать это, но, похоже, нет инструмента командной строки для определения количества используемых байтов в разделе.
Например, gparted сообщает мне, что занято 1,88 ГБ из 6,99 ГБ (обратите внимание, я использую /dev/loop0, который смонтирован во втором разделе /dev/sdb):
df
неправильно:
% df /dev/loop0
Filesystem ... Use%
udev ... 0%
...и fdisk
не parted
распечатывать использованное пространство.
Что я могу использовать из командной строки, чтобы определить используемое пространство в разделе gparted
?
ОТВЕТ: Резюме ниже: Раздел, ext4
который позволяет мне использовать dumpe2fs
и извлекать: free blocks
, block count
(всего), и block size
который можно объединить, чтобы точно соответствовать gparted
. Оказывается, он resize2fs
обрабатывает фрагментацию во время сжатия. Смотрите страницу руководства для ext4
получения дополнительной информации (хотя редактор страницы руководства немного озлоблен по поводу GiB против GB! :)
решение1
df
почти правильный инструмент, но вы должны запросить точку монтирования (или любой файл ниже), которая принадлежит файловой системе, которую вы хотите проверить, а не узел устройства. Узел, который вы использовали, /dev/loop0
, является специальным файлом, который принадлежит udev
виртуальной файловой системе; следовательно, вы получили udev
.
Смонтируйте /dev/loop0
(или /dev/sdb2
, я не уверен, зачем это нужно /dev/loop0
) где-нибудь (это может быть ro
mount) и вызовите df /the/mountpoint
. Затем df
вам расскажут, что файловая система сообщает о себе.
Я сказал " df
этопочти«правильный инструмент», поскольку нет гарантии, что вы сможете сжать файловую систему (а затем и раздел) до размера, сообщаемого инструментом. То, что df
выведет результат, может быть вашей первой (или, скорее, нулевой) оценкой.
Вам нужны разные инструменты для изменения размера различных полевых систем. В идеальном мире такой инструмент (или какой-то сопутствующий инструмент) способен сообщить вам минимальный возможный размер или, по крайней мере, минимальный размер, для которого изменение размера будет наверняка успешным. В реальности вы можете столкнуться с этим:
Известные ошибки
Минимальный размер файловой системы, оцененный с помощью,resize2fs
может быть неверным, особенно для файловых систем с размером блока 1 КБ и 2 КБ.
(источник)
gparted
использует специфические для файловой системы инструменты. Я запустил его с strace
и не увидел никаких доказательств того, что он использует df
. Я увидел btrfs filesystem show …
, dumpe2fs …
, …
Краткое содержание:
- Вы использовали
df
его неправильно. - В любом случае лучше использовать инструмент, специфичный для файловой системы;
gparted
делает. Я не могу сказать вам, какой инструмент вам следует использовать, поскольку вы не указали рассматриваемую файловую систему.