pwd: 마운트 지점 표시

pwd: 마운트 지점 표시

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`);

관련 정보