web-dev-qa-db-ja.com

ファイルを「フォロー」するシンボリックリンクを作成することはできますか?

動作:

me@local: tree
.
|-- ba
|   `-- file.txt
|-- foo
|   `-- file.txt -> ba/file.txt
`-- foobar

ここで、file.txtをbaからfoobarに移動するとします。

me@local: mv ba/file.txt foobar/file.txt

Fooフォルダー内のシンボリックリンクがまだba/file.txtパスを指していることに気付きました。

ソースファイルが移動されたときにパスを自動更新するシンボリックリンクを作成する方法はありますか?

または、ソースファイルを削除すると削除されるシンボリックリンクはありますか?

素晴らしいでしょう。

7
Strae

ハードリンクを作成できます。

ハードリンクには欠点があります。たとえば、ディレクトリへのリンクがなく、ファイルシステム間でリンクがありません。また、「オリジナル」を削除しても削除されません。実際、これらはドライブスペースの解放を妨げますが、ハードリンクを介してコンテンツにアクセスできます。

ファイルブラウザ(Nautilus)でハードリンクを作成することはできませんが、それについて バグレポート があります。

11
Mihai Capotă

はい、できます

シェルでは、次のように入力する必要があります。

ln ba/file.txt foo/file.txt

これは強力なリンクであり、ba/file.txtのファイルを削除してもfoo/file.txtに残ります(ls -lコマンドでリンクの数を確認できます)

行ったこと(シンボリックリンクの作成)を実行する場合は、次のように入力する必要があります。

ln -s ba/file.txt foo/file.txt
1
greuze

私が知っている限り、通常のLinuxファイルシステムでこれを行う方法はありません。

シンボリックリンクは、実際には「見て、私は本当にFooと呼ばれています」と言っている愚かなテキストです。有用なものを指すシンボリックリンクを作成できるのと同じように、何も指さないシンボリックリンクを作成できます。

Ext2/3/4以外のファイルシステム(jfs?、zfs?、zfs?など)の知識がある人は、ext2/3/4よりも高度なファイルシステムでこれが可能かどうかを判断できるかもしれません。 NTFSはこれをサポートするかもしれません。 NTFSにはそのようなシンボリックリンクはありませんが、他にも少し似たものがいくつかあります(その名前が今私を逃れています)。

1
Ben Williams