他のディレクトリがマウントされたときにディレクトリの内容にどのようにアクセスしますか?

他のディレクトリがマウントされたときにディレクトリの内容にどのようにアクセスしますか?

一部のファイルを含む/homeという既存のディレクトリがあります。 /etc/fstabを使用してこのディレクトリにパーティションをマウントしました。

UUID=10CD7304CE71E381   /home      ntfs    defaults        0       2

これまでは問題ありません。

何も削除せずに/homeの元のコンテンツにアクセスする方法。明らかに/homeパーティションをアンマウントできません。

答え1

Linuxでは、そのディレクトリを別のディレクトリにアンマウントすることでこれを行うことができます。マウントネームスペースインストール伝播フラグは次のように設定されます。プライベート:

# truncate -s 3G blob
# mkfs.ext4 blob
...

# mkdir dir
# echo below > dir/file

# mount blob dir
# echo above > dir/file

# cat dir/file
above

# unshare --mount --fork --propagation private sh -c 'umount dir; cat dir/file'
below

# cat dir/file
above

# unshare --mount --fork --propagation private sh -c '
   umount dir
   for f in dir/file /dev/fd/7; do
       realpath --relative-to=. "$f"; cat "$f"
   done
' 7<dir/file
dir/file
below
dir/file
above

注:この--propagation privateフラグは少なくとも最新バージョンのデフォルト値ですunshare(1)。強調するために追加しました。

答え2

バンドルでインストールする方が簡単です。unshareソリューションが機能しません。忙しいファイルシステムをアンマウントしたくありません。

mkdir /mnt/tmproot
mount --bind / /mnt/tmproot
ls /home # Still shows contents of mounted /home partition
ls /mnt/tmproot/home # pre-mount contents of mountpoint /home dir

元の答えに対するクレジット:https://superuser.com/a/977082/111432

答え3

簡単な答えは、リアルタイムシステムを使用することです。

ルートパーティションに別のパーティションがマウントされている場合、/home実際にはマウントを解除したりマウントを再バインドしたりすることはできません。ただし、ライブシステムには独自の/home/があり、通常はルートファイルシステムを提供するパーティションを使用しません。したがって、ライブシステムでは、ルートファイルシステムをマウントするだけで、そこから元の/homeディレクトリにアクセスできます。

ライブシステムを見つけることは難しくありません。これは、かなりの数のディストリビューションがCDに書き込んだり、USBドライブに挿入して起動できるライブCDイメージを提供しているためです。この機能を提供する一部のディストリビューションには、Debian、Knoppix、MX Linux があります。

関連情報