To be honest, I'm not sure how to do that, either. For example, you can check the filesystem driver, but NFS is far from the only non-local filesystem there is. There's AFS and DFS, off the top of my head. Then there are drivers that sit on top of other drivers, such as Rational's MVFS. Next way is to check against known local filesystems - but there are even more varieties here. ext3, ext2, ntfs, hpfs, fat, vfat, jfs, jfs2, vfs, resierfs, ... And then there's drivers that sit on top of these as well, such as IBM's Datalinks product's dlfs (sits on jfs, vfs, or ntfs, depending on the OS). So that's no good.
The only way I can think of is to check the output from mount or df. e.g., "df -k /some/dir" will report on /some/dir if that's the mountpoint, or /some, or /, depending on where the filesystem is mounted. If the filesystem it reports has a colon, it's remote. If there is no slash in there, then it's a pseudo-filesystem.
Personally, we've always gone for the documentation approach on this. "Don't use an NFS partition." If they try it, it may work, great. But if it doesn't work, we point to the documentation. ;-)
| [reply] |
This was kinda the way I was going:
1) lsvfs produces a list of all file systems and their count
2) df -t (fs) produces mount points for each given fs type
I can then associate them in Perl. However, before I go though all that work, I just wanted to know if there was an easier way.
| [reply] |
I think if you ran the df command that might give you the information you needed -- either it leads with /dev or /mnt and it's local, or it's something else and it's a network drive.
That's a not a cut-and-dried solution, but it might get you started.
Alex / talexb / Toronto
"Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds
| [reply] [d/l] [select] |
Have you read the source for df and mount to see how they do it? Then presumably you could take that little snippet of C and wrap it up in a module. You may need to make the C bit platform-specific.
| [reply] [d/l] [select] |
| [reply] |