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?

| improve this question | | | | |
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.

| improve this answer | | | | |
  • Perfect! I was toying with the idea of 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 5:23
  • it's a dup of unix.stackexchange.com/questions/49345/… – poige Apr 5 '13 at 18:42
  • Is it worth editing this answer to include the fact that you have to bind-mount a level above the directory you have covered with a mount, as is covered in the other answer? This answer is otherwise better, because it is shorter and hence easier to read quickly! – Michael Firth Mar 5 '19 at 16:03

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


/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?


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 /.

| improve this answer | | | | |
  • Mounting the parent folder was the key part that I was missing. Thanks. – aidan Mar 6 '18 at 1:11

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
| improve this answer | | | | |
  • 1
    Thanks Michael. This has the same disadvantage of making /home inaccessible to other users. – Janus Nov 30 '10 at 5:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.