하드링크와 달리 소프트링크는 실제로 원본 파일의 정보를 HDD에 저장한다는 사실을 알게 되었습니다. test1(원본 파일)과 test2(test1에 대한 소프트 링크)를 만든 다음 test1을 test3으로 mv(이름 변경)하여 소프트 링크 test2-->test1이 빨간색으로 바뀌고 비활성화되었습니다. 링크에서 Inode 번호를 사용하는 것 같은데, test1과 test3의 Inode 번호는 같은데 SoftLink가 동작하지 않습니다.
질문은 다음과 같습니다. 링크를 활성화하려면 소프트 링크에 어떤 정보가 필요합니까?
답변1
소프트 링크라고도 함심볼릭 링크, inode가 아닌 파일 이름으로 파일을 추적합니다. 따라서 링크한 파일은 동일한 파일 시스템(하드 링크와 달리)뿐만 아니라 어디에나 위치할 수 있습니다. 또 다른 특징은 소프트 링크가 최대 한도까지 다른 소프트 링크를 가리킬 수 있다는 것입니다. 소프트 링크는 본질적으로 대상 경로가 저장되는 특수 파일이지만 Linux는 이러한 유형의 파일을 인식하고 "내부" 경로를 읽고 대상 파일의 권한을 사용하여 파일에 액세스하려고 시도합니다. 프로그램은 링크를 클릭하지 않고 파일 자체에 대한 정보를 제공하도록 Linux에 요청할 수 있습니다(이것이 ls
대상 경로가 무엇인지 표시하는 방법입니다). 그러나 대부분의 프로그램은 링크가 가리키는 위치에만 관심이 있습니다.
따라서 귀하의 질문에 답하기 위해 소프트 링크에는 필요한 모든 정보가 포함되어 있습니다. 그러면 운영 체제는 추적 링크가 가리키는 모든 작업을 완료합니다.
답변2
소프트 링크는 파일 이름에만 연결되며 inode 번호에는 연결되지 않습니다. 원본 파일의 이름이 바뀌면 소프트 링크가 끊어지고 이제 링크는 자신이 가리키는 위치를 알 수 없습니다. 답변 중 하나에서 이 이미지를 게시합니다(기억이 나지 않습니다. 이 이미지는 오래 전에 휴대폰에 저장했습니다).
원본 파일의 이름을 바꾸면 my-soft-link
더 이상 존재하지 않는 파일 이름을 가리키게 되므로 링크나 포인터가 깨져서 빨간색으로 변하게 됩니다. 이 경우에는 my-soft-link
매달린 포인터와 유사합니다. 존재하지 않는 파일을 가리킵니다.
반면, 하드 링크는 inode 번호를 직접 가리키기 때문에 이러한 문제가 발생하지 않습니다. 따라서 원본 파일의 이름을 바꾸면 my-hard-link
댕글링 포인터가 되지 않습니다.
따라서 기호 링크를 다시 활성화하려면 이름이 바뀐 파일을 가리키도록 만들어 기호 링크를 업데이트합니다.
ln -sfn test3 test2