심볼릭 링크된 파일을 손상시키지 않고 자체 링크를 해제하는 방법

심볼릭 링크된 파일을 손상시키지 않고 자체 링크를 해제하는 방법

어떻게 이런 일이 발생했는지는 잘 모르겠지만 자체적으로 심볼릭 링크가 된 파일이 많이 있습니다. 파일을 복구할 수 있는 방법은 없는 것 같지만, 있기를 바랍니다. 이것이 ls -l이 말하는 것입니다

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

파일 중 하나를 연결 해제하려고 시도했지만 안타깝게도 파일이 사라졌습니다. 나는 또한 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. 즉)

관련 정보