시스템에서 깨진 심볼릭 링크를 모두 제거하면 단점이 있나요?

시스템에서 깨진 심볼릭 링크를 모두 제거하면 단점이 있나요?

Linux 시스템의 모든 파일을 반복하고 이에 대한 일부 메타데이터를 생성하는 스크립트를 실행 중입니다. 깨진 심볼릭 링크가 발견되면 오류가 발생합니다.

저는 *nix를 처음 사용하지만 링크 파일의 주요 아이디어와 깨진 링크가 존재하는 방식을 이해합니다. 내가 아는 한, 그들은 길거리의 쓰레기와 같습니다. 제거하려는 프로그램은 자신이 존재하고 속해 있다는 사실이나 업그레이드 과정에서 뭔가가 남아 있다는 사실을 패키지 관리자에게 알릴 만큼 똑똑하지 않습니다. 처음에는 실행 중인 스크립트를 건너뛰기 위해 조정하기 시작했고, "글쎄, 우리가 여기 있는 동안에는 언제든지 삭제할 수 있어..."라고 생각했습니다.

나는 뛰고있어우분투14.04(신뢰할 수 있는 탈). 이 작업을 수행하지 않을 이유가 없습니다. 하지만 개발 시스템에서 이를 실행하기 전에 이것이 실제로 나쁜 생각일 수 있는 이유가 있습니까? 내가 모르는 깨진 심볼릭 링크에 대한 어떤 목적이 있습니까?

답변1

기호 링크는 여러 가지 이유로 손상될 수 있습니다.

  • 더 이상 존재하지 않는 대상에 대한 링크가 생성되었습니다.
    해결 방법: 끊어진 기호 링크를 제거하십시오.
  • 이동된 대상에 대한 링크가 생성됩니다. 또는 대상을 기준으로 이동하는 상대 링크입니다. (상대 심볼릭 링크가 나쁜 생각은 아닙니다. 그 반대입니다. 절대 심볼릭 링크는 대상이 이동하기 때문에 오래될 가능성이 더 높습니다.)
    해결 방법: 의도한 대상을 찾아 링크를 수정합니다.
  • 링크를 만드는 중에 오류가 발생했습니다.
    해결책: 의도한 대상을 찾아 링크를 수정하십시오.
  • 링크는 이동식 디스크, 네트워크 파일 시스템 또는 현재 마운트되지 않은 기타 저장 영역의 파일을 가리킵니다. 해결 방법: 없음. 링크가 끊어지지 않습니다. 이 링크는 저장 영역이 설치되면 작동합니다.
  • 링크는 의도적으로 일부 시간에만 존재하는 파일을 가리킵니다. 예를 들어, 파일은 프로세스의 캐시된 출력이며 정보가 더 이상 사용되지 않을 때 삭제되지만 명시적으로 요청되는 경우에만 다시 생성됩니다. 또는 링크가 받은 편지함을 가리키며, 받은 편지함은 비어 있으면 삭제됩니다. 또는 링크는 해당 주변 장치가 연결된 경우에만 존재하는 장치 파일을 가리킵니다. 해결 방법: 없음. 링크가 끊어지지 않습니다.
  • 링크는 다른 스토리지 계층에서만 유효합니다. 예를 들어 chroot Jail에서만 유효하거나 NFS 서버에서 내보낸 경우에만 유효하며 서버나 일부 클라이언트에서만 유효합니다.
    해결 방법: 없음, 링크가 모든 곳에서 끊어지지 않습니다.
  • 대상에 도달하기 위해 디렉터리를 통과할 수 있는 권한이 없기 때문에 링크가 끊어졌지만 적절한 권한이 있는 사용자의 경우에는 끊어지지 않습니다.
    해결책: 없음, 모든 사람의 링크가 끊어진 것은 아닙니다.
  • 이 링크는 다음과 같은 정보를 저장하는 데 사용됩니다.vinc17이 인용한 Firefox 잠금 예. 이렇게 하는 한 가지 이유는 심볼릭 링크를 원자적으로 채우는 것이 더 쉽다는 것입니다. 다른 방법은 없습니다. 반면 파일을 원자적으로 채우는 것은 더 복잡합니다. 임시 이름으로 파일 내용을 만든 다음 해당 위치로 이동한 다음 처리해야 합니다. 아래의 충돌 레거시 오래된 임시 파일. 또 다른 이유는 기호 링크가 일부 파일 시스템의 inode 내에 직접 저장되는 경우가 많기 때문에 파일 내용을 읽는 것보다 기호 링크를 읽는 것이 더 빠르기 때문입니다.
    해결 방법: 없음. 이 경우 링크를 제거하면 해로울 수 있습니다.

심볼릭 링크가 첫 번째 카테고리에 속한다고 확신할 수 있다면 당연히 삭제할 수 있습니다. 그렇지 않으면 기권하십시오.

디렉토리를 재귀적으로 탐색하고 파일 내용에 관심을 갖는 프로그램은 일반적으로 끊어진 기호 링크를 무시해야 합니다.

답변2

매달려 있는 모든 심볼릭 링크를 맹목적으로 삭제하지 마십시오. 일부 정보를 전달하기 위해 존재할 수도 있고 심볼릭 링크 생성이 원자적으로 이루어지기 때문에 일반 파일보다 더 안전할 수도 있습니다.

예를 들어, Firefox는 값이 "IP_address:+PID" 형식인 기호 링크인 잠금 파일 "lock"을 생성합니다.

답변3

이 두포드그리고개틀링웹 서버는 Unix 파일 시스템을 구성 데이터베이스로 사용합니다(예를 들어 Windows 레지스트리를 사용하는 Microsoft IIS 또는 구문 분석하기 어려운 구성 파일을 사용하는 Apache와는 달리).

예를 들어, 가상 호스트는 단지 디렉토리일 뿐이고, 새로운 가상 호스트를 생성하는 것은 다음과 같습니다.

mkdir www.example.com:80

구성에는 어떤 파일이 필요합니까?

chmod o+r file_that_should_be_served
chmod o-r secret_passwords

CGI로 실행되도록 구성된 파일은 무엇이며, 제공되는 파일은 무엇입니까?

chmod a-x plain_file.html
chmod a+x cgi_script.html

마지막으로 (이 질문과 관련): 리디렉션을 구성하시겠습니까?

ln -s 'http://www.google.com/?q=awesome+query+site:www.example.com' search.html

search.html이제 아무데도 가지 않지만 사이트 실행에 필수적인 심볼릭 링크가 생성됩니다 .

답변4

더 이상 사용되지 않는 심볼릭 링크를 삭제할 때의 한 가지 중요한 단점은 해당 링크가 한때 가리킨 위치에 대한 참조를 잃게 된다는 것입니다. 이는 매우 유용할 수 있습니다!

파일이 존재하지 않는다고 가정하고 가리키는 send_to" "라는 파일에 대한 심볼릭 링크가 있다고 가정해 보겠습니다 ./Users/myname/tmp/Users/myname/tmp

심볼릭 링크를 통해 파일이 어디에 있는지 알고 있습니다.고의로이 되다. 예를 들어, 이 경우에는 그것이 임시 디렉터리임을 알 수 있으며 이를 "수정"해야 하는 경우 임시 디렉터리를 대상으로 지정하는 것을 고려해야 합니다.

my_config마찬가지로 링크를 가리키는 " " 링크는 여전히 유용한 정보인 확인 파일로 이름이 바뀌었기 /etc/conf_file때문에 "잘못"이 됩니다 . 디렉토리 conf_file로 이동 /etc하여 작업을 수행 ls하고 호출된 파일이 conf_file누락된 것을 발견하면 confirmation_file링크를 수정할 수 있는 충분한 정보가 있을 수 있습니다.

관련 정보