バインドマウントによって提供されるファイルが「mv」を介した上書きをサポートできますか?

バインドマウントによって提供されるファイルが「mv」を介した上書きをサポートできますか?

aファイルの上にファイルバインディングをインストールするとしますb

$ echo 'line 1' > a
$ touch b
$ mount --bind a b

初期ファイルの内容は、予想どおり両方のパスにミラーリングされます。

$ cat a
line 1

$ cat b
line 1

2 つのパスのいずれかに接続すると、新しいコンテンツが期待どおりに双方向にミラーリングされます。

$ echo 'line 2' >> a

$ cat a
line 1
line 2

$ cat b
line 1
line 2

$ echo 'line 3' >> b

$ cat a
line 1
line 2
line 3

$ cat b
line 1
line 2
line 3

ただし、次のb方法でこれをオーバーライドすることはできませんmv

$ echo 'totally new contents' > temp
$ mv tmp b
mv: can't rename 'tmp': Device or resource busy

新しいコンテンツをミラーリングするように機能させる方法はありますかa


私がこれをやろうとしている理由は、私のシステムのファイルシステムがどのように設定されるかに関係しています。

組み込みシステムなので、ほとんどのファイルシステムは読み取り専用でマウントされます。一部のサードパーティサービスは、同じハードコーディングされたファイルに書き込もうとします/etc/machine-infoが、/etc/hostname読み取り専用なので動作しません。この問題を解決する一般的な方法は、変更するファイルのみを含む書き込み可能パーティションを作成し、その書き込み可能ファイルをサービスが見つけることができる既存のLinuxパスにバインドマウントすることです。

これは、プロセスが書き込み用にファイルを開いてその場所で変更するときに機能します。しかし、上記のように、プロセスは同等ですmv

ベストアンサー1

aとbはマウントポイントを参照しているため使用できませんmv。ただし、を使用して上書きできますcp

または、b にバインドマウントする代わりに、親ディレクトリをバインドマウントすることもできます。

おすすめ記事