Como ver o olddir após o mount --bind olddir newdir?

2

No meu debian 7:

$ pwd
/home/freestyler

$ mkdir old new
# mount --bind old new

então

$ mount
/dev/cciss/c0d0p9 on /home/freestyler/new type ext4(rw,noatime,nodiratime,user_xattr,barrier=1,data=ordered)

Eu só consigo ver o /dev/cciss/c0d0p9 , que não é o mesmo que /home/freestyler/old

Como posso obter o caminho original do olddir?

No debian 6:

o mount envia bem o caminho do olddir:

 $ mount

/home/freestyler/old on /home/freestyler/new type none (rw,bind)
    
por freestyler 25.10.2013 / 08:50

1 resposta

2

Este é um bug, não tem uma resposta para você, mas aqui é o relatório do bug:

mount: Montagens de encadernação não mostradas como tal na saída de montagem

Eu estava realmente curioso sobre uma maneira de contornar isso, então peguei o live 7 do debian 7 e comecei a brincar. Eu finalmente cheguei a este post:

Note that /etc/mtab is only useful here if it's a text file maintained by mount. Some distributions set up /etc/mtab as a symbolic link to /proc/mounts instead; /proc/mounts is mostly equivalent to /etc/mtab but does have a few differences, one of which is not tracking bind mounts.

One piece of information that is retained by the kernel, but not shown in /proc/mounts, is when a mount point only shows a part of the directory tree on the mounted filesystem. In practice this mostly happens with bind mounts:

mount --bind /mnt/one/sub /mnt/partial

     

Em / proc / mounts, as entradas para / mnt / one e / mnt / partial possuem o mesmo dispositivo, o mesmo tipo de sistema de arquivos e as mesmas opções. A informação que / mnt / partial mostra apenas a parte do sistema de arquivos que está enraizada em / sub é visível na informação de ponto de montagem por processo em / proc / $ pid / mountinfo (coluna 4). As entradas lá são assim:

     

12 34 56:78 / /mnt/one rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered 12 34 56:78 /sub /mnt/partial rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered

E nos meus testes, você pode extrair as informações necessárias usando:

root@debian:~# cat /proc/1/mountinfo 
14 24 0:13 / /sys rw,nosuid,nodev,noexec,relatime - sysfs sysfs rw
15 24 0:3 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
16 24 0:5 / /dev rw,relatime - devtmpfs udev rw,size=10240k,nr_inodes=126630,mode=755
17 16 0:10 / /dev/pts rw,nosuid,noexec,relatime - devpts devpts rw,gid=5,mode=620,ptmxmode=000
18 24 0:14 / /run rw,nosuid,noexec,relatime - tmpfs tmpfs rw,size=102704k,mode=755
20 24 11:0 / /lib/live/mount/medium ro,noatime - iso9660 /dev/sr0 ro
21 24 7:0 / /lib/live/mount/rootfs/filesystem.squashfs ro,noatime - squashfs /dev/loop0 ro
22 23 0:16 / /lib/live/mount/overlay rw,relatime - tmpfs tmpfs rw
23 24 0:17 / /lib/live/mount/overlay rw,noatime - tmpfs tmpfs rw,mode=755
24 1 0:18 / / rw,relatime - aufs aufs rw,si=993d359391edfb38,noxino
25 18 0:19 / /run/lock rw,nosuid,nodev,noexec,relatime - tmpfs tmpfs rw,size=5120k
26 18 0:20 / /run/shm rw,nosuid,nodev,noexec,relatime - tmpfs tmpfs rw,size=205400k
27 15 0:21 / /proc/sys/fs/binfmt_misc rw,nosuid,nodev,noexec,relatime - binfmt_misc binfmt_misc rw
29 24 0:18 / /bindmount rw,relatime - aufs aufs rw,si=993d359391edfb38,noxino
30 24 0:18 /root/old /root/new rw,relatime - aufs aufs rw,si=993d359391edfb38,noxino

De: Listar apenas montagens de bind

Você também pode usar cat /proc/$$/mountinfo ou, se estiver em um aplicativo, pode usar o PID de aplicativos locais.

Nos comentários da outra pergunta, outra opção possível a usar é findmnt |fgrep [ ou se você está apenas verificando visualmente, apenas findmnt e pode ler a coluna de origem para ver as montagens de ligação listadas.

root@debian:~# findmnt | fgrep [
└─/root/new                                  aufs[/root/old] aufs         rw,relatime,si=993d359391edfb38,noxino
    
por 25.10.2013 / 14:01