检查文件夹是否是已安装的远程文件系统

检查文件夹是否是已安装的远程文件系统

检查给定文件夹是否位于 shell 脚本中已安装的远程 (nfs) 文件系统上的最佳方法(可靠、可移植等)是什么?

我正在寻找一个如下所示的命令:

chk-remote-mountpoint /my/path/to/folder 

答案1

作为史蒂芬说“对此没有通用的 Unix 答案”。

我发现我的问题的最佳解决方案:

df -P -T /my/path/to/folder | tail -n +2 | awk '{print $2}'

将返回文件系统类型,例如:nfsext3

选项-T不是标准,所以它可能无法在其他 Unix/Linux 系统上工作...

根据吉尔斯’下面的评论:“这适用于任何非嵌入式 Linux,但不适用于 BusyBox、*BSD 等。”

答案2

你可以使用 GNU stat

%m找出挂载点。

$ stat --format=%m /usr/src/linux
/usr/src

%T(在文件系统模式下)找出文件系统的名称。

$ stat --file-system --format=%T /usr/src/linux
reiserfs

因此您知道/usr/src/linux,在我的系统上, 存储在安装在 上/usr/src且文件系统类型为 的文件系统中reiserfs

另请参阅man stat以供进一步参考。这是一个非常通用的命令,当您需要有关文件的信息并且不想退回到grep | awk监护时,几乎总是有用的。

答案3

mount -l并使用grepsed、 或awk查找引用相关目录的行。

答案4

df(1) 的“-l”将在非本地文件系统上失败并出现错误,因此您可以使用此行为来了解文件系统是否是远程的:

df -l /path 2> /dev/null | grep -q "File"
rc=$?
if [ "$rc" = "0" ]
then
   echo "local mount, do stuff"
fi

但是,-l选项是不标准

相关内容