Есть ли быстрый и грязный способ программирования программно, в оболочке script или в Perl, находится ли путь в удаленной файловой системе (nfs или тому подобное) или локальном? Или это единственный способ сделать это для разбора /etc/fstab и проверить тип файловой системы?
Как определить, находится ли файл в удаленной файловой системе с Perl?
Ответ 1
stat -f -c %T <filename>
должен делать то, что вы хотите. Вы также можете захотеть -l
Ответ 2
Вы можете использовать "df -T" для получения типа файловой системы для каталога или использовать параметр -t, чтобы ограничить отчетность конкретными типами (например, nfs), и если он возвращается с "обработкой файловых систем", то это не один из тех, что вы ищете.
df -T $dir | tail -1 | awk '{print $2;}'
Ответ 3
Если вы используете df
в каталоге, чтобы получить информацию только о устройстве, в котором он находится, например, для текущего каталога:
df .
Затем вы можете просто разобрать вывод, например.
df . | tail -1 | awk '{print $1}'
чтобы получить имя устройства.
Ответ 4
Я тестировал следующее на solaris7,8,9 и 10, и он кажется надежным
/bin/df -g <filename> | tail -2 | head -1 | awk '{print $1}'
Должен дать вам тип fs, а не пытаться сопоставить "хост: путь" в точке монтирования.
Ответ 5
В некоторых системах номер устройства отрицателен для файлов NFS. Таким образом,
print "remote" if (stat($filename))[0] < 0