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