如何判断文件是否在Perl的远程文件系统上?

时间:2008-11-17 18:41:26

标签: perl shell filesystems nfs

是否有一种快速而又脏的方式以编程方式,在shell脚本或Perl中告诉路径是位于远程文件系统(nfs等)还是本地路径?或者是解析/ etc / fstab并检查文件系统类型的唯一方法吗?

5 个答案:

答案 0 :(得分:13)

stat -f -c %T <filename>应该做你想做的事。您可能还需要-l

答案 1 :(得分:2)

您可以使用“df -T”获取目录的文件系统类型,或使用-t选项将报告限制为特定类型(如nfs),如果它返回“没有处理文件系统”,则它不是你要找的那个。

df -T $dir | tail -1 | awk '{print $2;}'

答案 2 :(得分:2)

如果您在目录上使用df来获取其所在设备的信息,例如对于当前目录:

df .

然后,您可以解析输出,例如

df . | tail -1 | awk '{print $1}'

获取设备名称。

答案 3 :(得分:1)

我在solaris7,8,9&amp;上测试了以下内容。 10,它似乎是可靠的

/bin/df -g <filename> | tail -2 | head -1 | awk '{print $1}'

应该为您提供fs类型,而不是尝试匹配您的挂载点中的“host:path”。

答案 4 :(得分:0)

在某些系统上,NFS文件的设备编号为负。因此,

print "remote" if (stat($filename))[0] < 0