我已将一个目录安装到另一个目录,mount --bind
以便我的服务器的 sftp 用户可以访问该目录。
mount --bind /path/share /path/home/user/stuff
我已经把它放进去/etc/fstab
并且效果很好。
如果我cd
进入已安装的目录并执行操作pwd
,则该目录似乎实际上在物理上存在:
/path/home/user/stuff/share
是否有一个命令显示“原始”目录所在的位置(就像符号链接:当您ls -fsl
看到原始路径时)?
答案1
我想你正在寻找mount -l
。
答案2
是的,该目录就在那里,因为您将其安装在那里。mount --bind
告诉内核使用现有的安装并将其附加到另一个安装点。就内核而言,
mount /dev/something /path/share
mount --bind /path/share /path/home/user/stuff
和
mount /dev/something /path/home/user/stuff
mount --bind /path/share /path/home/user/stuff
是同一件事。有两种方法可以区分它们:
- 如果
/path/share
不是安装点(即它是安装在/path
或 处的较大文件系统的一部分/
),您可以告诉绑定安装,因为它不在文件系统的根目录。 - 该
mount
程序将其操作记录在/etc/mtab
.
该df
命令读取/etc/mtab
,因此如果目录位于使用该bind
选项挂载的文件系统上,您可以看到原始路径是什么
df -P /path/to/file | awk 'NR==2 {print $1}'
(第二行的第一个字段)。请注意,此信息并不总是可靠,例如,原始文件系统可能已被卸载,并且现在在此位置没有安装任何内容或其他内容,如下所示
mount /dev/something /path/share
mount --bind /path/share /path/home/user/stuff
unmount /dev/something
mount /dev/somethingelse /path/share
答案3
在 Linux 上,您现在可以使用findmnt
(from util-linux
) 来实现:
~$ sudo mount --bind /usr/local mnt
~$ cd mnt/bin
~/mnt/bin$ pwd
/home/stephane/mnt/bin
~/mnt/bin$ findmnt -T .
TARGET SOURCE FSTYPE OPTIONS
/home/stephane/mnt /dev/mapper/VG-LV[/usr/local] ext4 rw,noatime,discard,errors=remount-ro,data=ordered
答案4
根据黛西的回答,怎么样...
use strict;
use warnings;
use File::Basename;
my $mntpath = $ARGV[0] or die "Missing required parameter <pathname>\n";
$mntpath = dirname ($mntpath) while (! grep / on $mntpath type /, `mount`);