На моем безголовом NAS у меня есть sdf1
(флеш-карта), смонтированная как /
while /home
, смонтирована с lv00
(том LVM, поддерживаемый программным RAID). Чтобы иметь доступ к машине при сбое RAID, у меня есть копия открытого ssh открытого ключа и т. Д. В /home/foo/.ssh
в файловой системе из sdf1
.
Чтобы обновить файлы, скрытые вмонтированном /home
я обычно lv00
в /mnt/home
, делаю то, что мне нужно сделать, а затем перемещаю lv00
на место.
Есть ли способ достичь этого без размонтирования /home
?
mkdir /mnt/root mount --bind / /mnt/root ls /mnt/root/home/foo/.ssh
Пока вы используете --bind
(в отличие от --rbind
), вы получаете клон монтирования без материала, установленного поверх него.
Вы можете переместить монтировку в новое место без ее размонтирования, используя mount --move
:
$ mount --move /home /mnt/home do stuff with the local /home $ mount --move /mnt/home /home
Я попытался добиться чего-то подобного, но ответ эгоизма не объяснил семантику метода. Мне это не удалось, и поэтому я задал практически тот же вопрос ранее на unix.SE. После комментария я понял это сам и ответил на него. Это отредактированная версия моего ответа, чтобы вписаться в этот контекст здесь. Я снял свой другой вопрос (и ответ) в пользу этого.
Вот что я пытался сделать:
кронштейны:
/dev/sda1 on / type ext4 (rw) /dev/sdb1 on /data type ext4 (rw) /data/home on /home type none (rw,bind)
После установки /
меня есть папка /home/joe
для пользователя joe
. Как только другое место будет смонтировано ( /data
), у меня есть полный набор доступных домашних папок, поэтому я привязываю их к месту ( /data/home on /home
). Существует папка /data/home/joe
, поэтому, если установка /dev/sdb1
завершается успешно, он получит содержимое /data/home/joe
, иначе он вернется в /home/joe
( on /dev/sda1
!).
Когда это удается, как я могу получить доступ к исходному содержимому /home/joe
(on /dev/sda1
!) Вместо тех, которые привязаны к месту установки /data/home/joe
?
Основываясь на комментарии комментария Патрика по моему вопросу и решению эфемерным (принятый ответ здесь), я придумал следующее.
По-видимому, возможно mount --bind
mount -o bind
) к mount --bind
(или mount -o bind
) к родительской папке ( это ключевая часть ) привязки в другом месте и, таким образом, получить доступ к исходному содержимому. Итак, для моего примера, вместо того, чтобы пытаться:
mount --bind /home/joe /home/joe/underneath # or ... mount --bind /home /home/joe/underneath
(т. е. установить уже привязанные места привязки в другом месте) мне пришлось:
test -d /.ROOT || mkdir /.ROOT mount --bind / /.ROOT mount --bind /.ROOT/home/joe /home/joe/underneath
Так вот что Патрик имел в виду в своем комментарии
Если вы не перемонтируете
/
(root), этот ответ должен работать нормально.
До тех пор, пока у вас есть родительская папка для доступного места привязки, она будет работать, хотя и с одной ссылкой, как показано выше. Если вы привязали что-то к чему-то, вам не повезло, так как нет родительской папки для /
.