如何判断文件是否在Perl的远程文件系统上?
-
08-07-2019 - |
题
是否有一种快速而又脏的方式以编程方式,在shell脚本或Perl中告诉路径是位于远程文件系统(nfs等)还是本地路径?或者是解析/ etc / fstab并检查文件系统类型的唯一方法吗?
解决方案
stat -f -c %T <filename>
应该做你想要的。您可能还需要-l
其他提示
您可以使用<!>“; df -T <!>”;获取目录的文件系统类型,或使用-t选项将报告限制为特定类型(如nfs),如果它返回<!>“;没有文件系统处理<!>”,那么它不是一个你正在寻找的那些。
df -T $dir | tail -1 | awk '{print $2;}'
如果您在目录上使用df
来获取其所在设备的信息,例如对于当前目录:
df .
然后,您可以解析输出,例如
df . | tail -1 | awk '{print $1}'
获取设备名称。
我在solaris7,8,9 <!>放大器上测试了以下内容; 10,它似乎是可靠的
/bin/df -g <filename> | tail -2 | head -1 | awk '{print $1}'
应该为你提供fs类型,而不是试图匹配<!> quot; host:path <!> quot;在您的挂载点。
在某些系统上,NFS文件的设备编号为负。因此,
print "remote" if (stat($filename))[0] < 0
不隶属于 StackOverflow