Не протестировали его, но df -P
должен вести себя то же на большинстве платформ.
Это работает над Linux.
$ mount | grep "^$(df -Pk . | head -n 2 | tail -n 1 | cut -f 1 -d ' ') " | cut -f 5 -d ' '
Или повреждение его в допускающие повторное использование функции:
# get_mount <directory>
get_mount() {
df -Pk "$1" | head -n 2 | tail -n 1 | cut -f 1 -d ' '
}
# get_fs <mountpoint>
get_fs() {
mount | grep "^$1 " | cut -f 5 -d ' '
}
И вызывание функции:
get_fs $(get_mount .)
Мог быть переписан для немного быстрее использования sed
или awk
, но этот путь, вероятно, легче читать.
Если это не работает, Вы могли бы попробовать что-то подобное, но использование /etc/mtab
вместо вывода mount
.
Одно объяснение, которое приходит на ум, состоит в том, что у Вас есть материал, скрытый позади точки монтирования вне досягаемости du
.
На Linux можно заставить связывание смонтироваться корневой файловой системы, чтобы смочь видеть все это на различной точке монтирования. Затем более тщательно изучите материал, это скрыто точками монтирования в исходном представлении.
mkdir /root/root-rebound
mount -o bind / /root/root-rebound
du -sc $(df -P | awk 'NR>2 {print "/root/root-rebound" $6}')
Вы посмотрели на фрагментацию вообще? Единственным путем я знаю, что du и df могут не согласиться (помимо удаленной части, которую Вы уже исключили), является служебным, и который обычно прибывает из набора фрагментированных файлов (где du сообщил бы о небольшом количестве, но из-за количества степеней файлы действительно хорошо разбираются в диске, и, как замечено df).
Этот инструмент может показать Вам, как плохо фрагментация находится на ext3 файлах: