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 にバインドマウントする代わりに、親ディレクトリをバインドマウントすることもできます。
答え2
山編集するポイントは移動または削除できず、本質的に変更することはできません。
しかし、ここにいくつかインストールすることができます。
mv
また、以前に存在していたハードリンクを切断します。