2 つの既存のファイルがあります:abcd
およびxyz
。
$ cat abcd
abcd
$ cat xyz
xyz
これらのファイルをソフトリンクしようとすると、次のメッセージが表示されます。
ln: cannot create xyz: File exists
使いたくない
ln -sf abcd xyz
xyz
コマンドを使用すると、内容が内容で上書きされるためですabcd
。
私が望むのは、リンクが解除されたら、abcd
すべての元のコンテンツを表示する必要があるということです。xyz
つまり、一時的に2つのファイルをリンクしたいのです。
ソフト/ハードリンク(例:インストールなど)以外に他のソリューションがあるかどうかを提案してください。
編集:、、、などSolaris OS
のコマンドを手動で入力せずに使用しています。mount --bind
mount -B
bindfs
fusermount
また:を試してみましたmount -o bind abcd xyz
が、次のメッセージが表示されましたcannot open /etc/vfstab
。確認してみると、私だけがアクセスできることが確認/etc/vfstab
されたRoot
。
ベストアンサー1
ln
これは私たちがしなければならないことではありません。ln
既存のファイルへのハードリンクを作成します。つまり、ディスク上の同じファイルを指す複数のディレクトリエントリを作成します。リンクされたファイルがどのように機能するかは、1つのファイルを編集するとすべてのファイルに影響を与えることです。
必要な機能はUnix固有の機能ではありません(後でリンクを解除するためにファイルを1つとして表示するように接続)。 Linuxただし、バインドマウントと呼ばれる機能は(数年前)に実装され、あるファイルまたはディレクトリを別のファイルまたはディレクトリ(ファイルの上のファイル、ディレクトリの上のディレクトリ)をマウントできます。
提案されたソリューション:あるファイルが一時的に別のファイルになるようにするには、バインドマウント(mount -B file1 file2
)を使用します。このファイルfile1
はにインストールされますfile2
。後で削除すると、これら2つのファイルが元のものと同じように再表示されます。
# echo A >A
# echo B >B
# mount -B A B
# cat A
A
# cat B
A
# umount B
# cat A
A
# cat B
B
「リンクされた」ファイルを2つのファイルの関連付けとして表示するには、3番目のファイルを作成して後で削除する必要があります。