On my headless NAS I have sdf1
(a flash-card) mounted as /
while /home
is mounted from lv00
(an LVM volume backed by a software RAID). To be able to access the machine when the RAID fails, I have a copy of my ssh public key, etc. in /home/foo/.ssh
on the file-system from sdf1
.
To update the files that are hidden by the mounted /home
I normally remount lv00
in /mnt/home
, do what I have to do, and then move lv00
back in place.
Is there a way to achieve this without unmounting /home
?

- 829,060

- 1,533
3 Answers
mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/home/foo/.ssh
As long as you use --bind
(as opposed to --rbind
), you get a clone of the mount without the stuff mounted on top of it.

- 15,880
I've tried to achieve something similar, but ephemient's answer didn't explain the semantics of the method. It failed for me and so I asked virtually the same question earlier here on unix.SE. After a comment I figured it out on my own and answered it. This is an edited version of my answer to fit into this context here. I removed my other question (and answer) in favor of this one.
Here's what I was trying to do:
Example case
Mounts:
/dev/sda1 on / type ext4 (rw)
/dev/sdb1 on /data type ext4 (rw)
/data/home on /home type none (rw,bind)
After mounting /
I have a folder /home/joe
for user joe
. Once the other location gets mounted (/data
) I have the full set of home folders available, so I am bind-mounting them into place (/data/home on /home
). There is a folder /data/home/joe
, so as long as the mounting of /dev/sdb1
succeeds, he'll get the contents of /data/home/joe
, otherwise he'll fall back to /home/joe
(on /dev/sda1
!).
When it succeeds, how can I access the original contents of /home/joe
(on /dev/sda1
!) instead of those bind-mounted into place from /data/home/joe
?
Solution
Based on a comment by Patrick's comment on my question and the solution by ephemient (accepted answer here), I came up with the following.
It is apparently possible to mount --bind
(or mount -o bind
) the parent folder (this is the crucial part) of a bind-mount elsewhere and thereby access the original contents. So for my example case, instead of trying to:
mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath
(i.e. mount the already bind-mounted locations elsewhere) I had to:
test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath
So this is what Patrick meant in his comment
Unless you're remounting over
/
(root), that answer should work just fine.
As long as you have a parent folder to the bind-mounted location available, it'll work, albeit with one indirection as shown above. If you bind-mounted something over /
you're out of luck, as there is no parent folder for /
.

- 16,593
-
-
Ditto with the parent folder. Intuitively, I thought you should bind mount the original mount point, but instead you mount the bind mounted directory. – Manngo May 29 '20 at 08:47
-
You can just mount the device that originally was mounted as
/
if you have a later bind-mount on/
. It's safe: https://unix.stackexchange.com/a/276399/5589 – pepoluan Mar 25 '22 at 02:09
You can move the mount to a new location without unmounting it, using mount --move
:
$ mount --move /home /mnt/home
do stuff with the local /home
$ mount --move /mnt/home /home

- 93,103
- 40
- 240
- 233
-
1Thanks Michael. This has the same disadvantage of making /home inaccessible to other users. – Janus Nov 30 '10 at 05:18
-
mount --bind
, but only got some convoluted ideas that were sure to break when I needed it. This does exactly what I need and can even go in as a permanent mount. Thanks – Janus Nov 30 '10 at 05:23mkdir /home/home; mount --bind /home /home/home
, then if you're user "foo" you can runls /home/home/foo/.ssh
– Adam Katz Jan 24 '23 at 03:56