Как получить информацию о файловой системе для определенного файла?

Как получить информацию о файловой системе для определенного файла?

Каков наилучший способ узнать информацию о файловой системе файла?

Например, если у меня есть файл

/media/xyz/path/to/file.ext

И /etc/fstabсодержит

//server1/Share1 /media/xyz cifs option1=value1,...

Как определить, что файл находится на общем ресурсе Samba, имеет ли он локальный путь /path/to/file.extи с какими параметрами была смонтирована файловая система?

Является ли парсинг вывода mountпереносимого решения? Или parse findmnt? Есть ли совместимый с POSIX способ добиться этого?

решение1

stat(1) — это переносимый способ узнать часть этой информации, например:

stat --file-system --format="%T" /media/xyz/path/to/file.ext

Все остальное очень специфично для ОС, в последних системах Linux вы можете легко использовать его findmnt --outputв скрипте.

решение2

Если я правильно понял вашу потребность, и объединив части предыдущих ответов, следующее может быть тем, что вам нужно. определить в скрипте (например, в вашем .bashrc)-

findpart ()
{
df -h $1|sed 1d|cut -d" " -f1|xargs findmnt -n
}

и затем вы можете запустить его по мере необходимости

findpart /foo/file.ext

Связанный контент