测试文件是否是本地的

Tom*_*low 5 networking mount test

我需要在脚本中测试文件是来自网络安装还是真正的本地文件。更明确地说:我需要测试解析内容是快还是慢,但就我而言,本地与网络是一个可靠的指标。

我想出的最佳尝试是stat -c %m [path]获取路径的挂载点,它提供/本地磁盘上的文件和 CIFS 挂载的挂载点。

但我怀疑除了我非常简单的配置(一个本地驱动器、一个大分区、几个网络安装)之外,这不是一个可靠的诊断,所以我想要一个健壮/规范的方法。搜索没有给出任何有用的线索;像“网络”和“路径”这样的术语实在是太多了。

Mar*_*ick 1

您可以使用以下命令输出包含给定文件或目录的文件系统的类型

\n\n
 stat -f --format="%T" /path/to/file\n
Run Code Online (Sandbox Code Playgroud)\n\n

并据此采取行动。一些可能的输出是cifs, nfs, afs, \xe2\x80\xa6 (假定为远程)和ufs, ext2/ext3(原文如此 - ext2、ext3 和 ext4 具有相同的文件系统幻数)、btrfstmpfs、 \xe2\x80\xa6 (假定为本地)。

\n\n

有一件事可以帮助您确定文件系统类型是本地还是远程:GNU coreutils,其中包括statdf,对于几十种不同的文件系统类型有“本地”和“远程”文件系统的概念。

\n\n
df -T -l | awk \'NR > 1 { print $2 }\' | sort -u\n
Run Code Online (Sandbox Code Playgroud)\n\n

将输出认为是本地的所有已安装文件系统的文件系统类型df

\n\n

正如对原始问题的评论中指出的那样,很难判断存储设备是否是本地的;文件ext3系统/dev/sdb5可能位于光纤通道设备上,该设备可能直接连接,也可能位于多个网络交换机之外,您不太可能使用标准用户级实用程序来辨别。

\n