Различие между - rbind и - связывает в монтировании

Я смущен. Файловая система Linux является древовидной структурой с корневым узлом (стартовый узел) как корневой каталог. Теперь давайте предположим, что у меня есть папка abc в местоположении /home/abc и другая папка xyz в местоположении /home/xyz

Папка xyz состоит из некоторых других папок и файлов в нем. (исключая def и mno папки в нем),

     xyz
    /   \
   def   mno

Когда я выполняю команду

mount --rbind /home/xyz /home/abc

(rbind, рекурсивно связывают), я вижу все содержание папки xyz в abc. Теперь, когда я просто выполняю команду

mount --bind /home/xyz /home/abc

Я все еще вижу все содержание xyz в abc.

Почему это?

--bind работать столь же так же к --rbind.

2
задан 14 November 2019 в 06:12

2 ответа

Вы справедливо заметили, что, и с --bind и с --rbind, видите, что каталоги при связывании монтируются.

различие - то, что, с --rbind, но не с --bind, Вы видите , содержание другого связывать монтируется при связывании, монтируются.

<час>

В применении к Вашему примеру, предположите для простоты, что /home/xyz/def и /home/xyz/mno пустые каталоги. Предположим далее, что Вы затем используете их , как связывают, монтируется, т.е. Вы используете их в качестве точек монтирования в [1 111] или mount --rbind. Это заставляет их казаться непустыми. Затем предположите, что Вы работаете:

mount --bind /home/xyz /home/abc

Затем /home/abc/def и /home/abc/mno оба существуют, но они кажутся пустыми, потому что Вы использовали mount --bind, который нерекурсивен.

Напротив, предположите, что Вы вместо этого сделали /home/abc, связывание монтируется путем выполнения этой команды:

mount --rbind /home/xyz /home/abc

Затем /home/abc/def и /home/abc/mno и существовать и они кажутся непустыми - у них есть содержание /home/xyz/def, и /home/xyz/mno связывают, монтируется - потому что Вы использовали mount --bind, который является рекурсивным.

<час>

Вот полностью обработанный пример:

ek@Gnar:~$ mkdir original
ek@Gnar:~$ touch original/a-regular-file
ek@Gnar:~$ mkdir original/a-directory
ek@Gnar:~$ mkdir parent-of-mountpoint
ek@Gnar:~$ mkdir parent-of-mountpoint/mountpoint
ek@Gnar:~$ sudo mount --bind ~/original ~/parent-of-mountpoint/mountpoint
ek@Gnar:~$ mkdir nonrecursive-other-mountpoint recursive-other-mountpoint
ek@Gnar:~$ sudo mount --bind ~/parent-of-mountpoint ~/nonrecursive-other-mountpoint
ek@Gnar:~$ sudo mount --rbind ~/parent-of-mountpoint ~/recursive-other-mountpoint
ek@Gnar:~$ tree -F original/
original/
├── a-directory/
└── a-regular-file

1 directory, 1 file
ek@Gnar:~$ tree -F parent-of-mountpoint/
parent-of-mountpoint/
└── mountpoint/
    ├── a-directory/
    └── a-regular-file

2 directories, 1 file
ek@Gnar:~$ tree -F nonrecursive-other-mountpoint/
nonrecursive-other-mountpoint/
└── mountpoint/

1 directory, 0 files
ek@Gnar:~$ tree -F recursive-other-mountpoint/
recursive-other-mountpoint/
└── mountpoint/
    ├── a-directory/
    └── a-regular-file

2 directories, 1 file
ek@Gnar:~$ mount | grep ~
/dev/sda2 on /home/ek/parent-of-mountpoint/mountpoint type ext4 (rw,relatime)
/dev/sda2 on /home/ek/nonrecursive-other-mountpoint type ext4 (rw,relatime)
/dev/sda2 on /home/ek/recursive-other-mountpoint type ext4 (rw,relatime)
/dev/sda2 on /home/ek/recursive-other-mountpoint/mountpoint type ext4 (rw,relatime)
1
ответ дан 2 December 2019 в 03:29

Читать man 8 mount. Это говорит (добавленный акцент):

Свяжите монтируется

Повторно смонтируйте часть файловой иерархии где-то в другом месте. Вызов:

mount --bind olddir newdir

или при помощи этой fstab записи:

/olddir /newdir none bind

После этого вызова то же содержание доступно в двух местах. Можно также повторно смонтировать единственный файл (на единственном файле). Также возможно использовать связывание, монтируются для создания точки монтирования из обычного каталога, например:

mount --bind foo foo

Связывание монтирует, что вызов присоединяет только (часть) единственную файловую систему, не возможное подмонтирование. Вся файловая иерархия включая подмонтирование присоединяется второе место при помощи:

mount --rbind olddir newdir

Обратите внимание, что файловая система монтирует, что опции останутся тем же как опциями на исходной точке монтирования.

1
ответ дан 2 December 2019 в 03:29

Другие вопросы по тегам:

Похожие вопросы: