Подтвердить что ты не робот

Как определить, находится ли файл в удаленной файловой системе с Perl?

Есть ли быстрый и грязный способ программирования программно, в оболочке script или в Perl, находится ли путь в удаленной файловой системе (nfs или тому подобное) или локальном? Или это единственный способ сделать это для разбора /etc/fstab и проверить тип файловой системы?

4b9b3361

Ответ 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