シンボリックリンクファイルを壊さずに独自のリンクを解除する方法

シンボリックリンクファイルを壊さずに独自のリンクを解除する方法

どのようにこれが起こったのかはわかりませんが、それ自体がシンボリックリンクになったファイルがたくさんあります。ファイルを回復する方法はないようですが、ありますように。これがls -lが言うものです

    lrwxrwxrwx  1 bob users   50 Sep  9 21:45 background.png -> /path/to/background.png

ファイルの1つを切断しようとしましたが、残念ながらファイルが消えていました。私もreadlinkを試しました。 Readlinkによると、ファイルパスは/path/to/Background.pngです。

私が言ったように、私はこれがどのように起こったのか本当にわかりません。これらすべてのファイルは以前の管理者から受け継がれました。解決策は何ですか?

答え1

ファイルの場合はい自分へのシンボリックリンクが存在せず、データが存在せず、それにアクセスしようとするとループが発生し、最終的にエラーが発生します。

例えば

$ ls -l myfile 
lrwxrwxrwx 1 sweh sweh 19 Sep  9 22:38 myfile -> /path/to/here/myfile

$ cat myfile 
cat: myfile: Too many levels of symbolic links

データがないため、これらのシンボリックリンクを削除してもデータは失われません。はい保存するデータがありません。

Too many levels of symbolic linksファイルの試行中にエラーが発生しない場合、catファイルは次のようになります。いいえそれ自体へのリンクです。

答え2

ln〜するいいえファイル自体へのリンクでファイルを上書きします。以下を使用すると、ファイル自体にリンクされたファイルを取得できます。

$ ln -s `pwd`/myfile myfile
$ ls -l myfile
lrwxrwxrwx 1 grochmal users 25 Sep 10 03:41 myfile -> /home/grochmal/tmp/myfile

ただし、データを含むファイルを使用しようとすると、次のようになります。

$ rm -f myfile
$ echo yay > myfile
$ ln -sf `pwd`/myfile myfile
ln: '/home/grochmal/tmp/myfile' and 'myfile' are the same file

ln一方、あるファイルは別のファイルへのリンクで上書きされます。

しかし、自分を指すリンクがデータがまったくないファイル(またはソフトリンクが生成される前に明示的に削除されたファイル)であることはかなり確信で​​きます。

(Linuxではlnfromを使用しますcoreutils。つまり)

関連情報