Как я могу проверить, находится ли какая-либо папка в Linux на общем диске или на локальном диске?
1 ответ
Вы можете определить, находится ли папка на локальном диске, посмотрев тип файловой системы. Первая часть ответа - найти файловую систему, в которой находится папка. Для этого вам нужно найти файловую систему, используя поле st_dev
stat
информации для папки. (Вы также можете сделать это, проверив путь к папке, но затем вам придется проверить каждый элемент пути на наличие символических ссылок).
Затем вы можете сделать перекрестную ссылку на поле st_dev
с таблицей монтирования в /proc/mounts
mounts, используя getmntent_r()
. Есть пример этого в предыдущем ответе. Поле mnt_type
даст вам текст типа файловой системы, и вы можете сравнить строку со списком сетевых файловых систем.
Вы можете узнать больше информации о файловых системах FUSE, посмотрев в поле mnt_fsname
, но есть много файловых систем FUSE. Вы можете рассматривать их как сетевое хранилище. Вы должны будете сделать свой собственный запрос о кластерных файловых системах, таких как GFS.