既存のファイルを2つリンクする

既存のファイルを2つリンクする

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 --bindmount -Bbindfsfusermount

また:を試してみました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番目のファイルを作成して後で削除する必要があります。

おすすめ記事