분산된 링크 추적 및 개체 식별자

경로 및 파일 이름을 사용하여 파일 또는 디렉터리에 대한 참조를 저장하는 것은 안정적이지 않습니다. 사용자가 파일의 이름을 바꾸면 파일에 대한 링크가 끊어집니다. 사용자가 디렉터리의 이름을 바꾸면 파일 및 디렉터리 트리의 모든 파일과 하위 디렉터리에 대한 링크가 끊어집니다.

분산된 링크 추적 서비스를 사용하여 클라이언트 애플리케이션은 이동한 링크 원본을 추적할 수 있습니다. 링크 추적 서비스를 구독하는 클라이언트는 참조의 무결성을 유지할 수 있으며 사용자에게 투명한 방식으로 개체를 추적할 수 있습니다.

개체 식별자

링크 추적 서비스는 ID(개체 식별자)를 사용하여 개체에 대한 링크를 유지 관리합니다. 개체 ID는 볼륨의 파일 또는 디렉터리를 고유하게 식별하는 선택적 특성입니다.

모든 개체 ID의 인덱스는 볼륨에 저장됩니다. 이름 바꾸기, 백업 및 복원 작업은 개체 ID를 유지합니다. 그러나 복사 작업은 고유성을 위반하기 때문에 개체 ID를 유지하지 않습니다.

개체 ID에 대해 다음 작업을 수행할 수 있습니다.

  • 만들기
  • 삭제
  • 쿼리

개체 ID를 만들 때 링크 추적 서비스에 대한 파일의 ID를 설정합니다. 반대로 개체 ID를 삭제하면 링크 추적 서비스가 파일에 대한 링크 유지를 중단합니다. 개체 ID에 대한 작업을 수행하는 파일 시스템 제어 코드 목록은 파일 관리 제어 코드를 참조하세요.

분산된 링크 추적 서비스는 NTFS 파일 시스템 볼륨 내의 셸 바로 가기 및 OLE 링크에 대한 링크 원본을 추적합니다. 링크 클라이언트는 링크 원본의 새 위치에 대한 업데이트된 정보로 끊어진 링크를 수정할 수 있습니다.

셸 바로 가기에는 트리 검색 알고리즘을 사용하여 이동된 링크 원본과 일치하는 항목을 찾는 휴리스틱 링크 추적 기능이 포함되어 있습니다. 검색 알고리즘은 만든 날짜, 파일 크기, 파일 이름 및 확장명을 포함하는 파일 정보와 마지막으로 알려진 파일 경로를 기반으로 합니다.

OLE 연결에는 동일한 휴리스틱 링크 추적 기능이 포함되어 있습니다. Windows 또한 동일한 휴리스틱 링크 추적 기능을 포함하고 있으며, 일부 일반적인 시나리오에서 결과를 얻기 위해 몇 가지 네임스페이스 검색 기능이 개선되었습니다. 향상된 기능에는 클라이언트 애플리케이션에서 적용한 시간 제한에 따라 달라지는 다음 절차가 포함됩니다.

네임스페이스를 검색하려면

  1. 마지막 디렉터리에서 아래로 네 개의 디렉터리 수준을 검색합니다.
  2. 한 디렉터리 위로 이동하고 1단계와 2단계를 세 번 더 반복합니다. 개체가 가까이 이동한 경우 결과를 얻을 수 있습니다.
  3. 데스크톱 루트에서 아래로 네 수준을 검색합니다. 개체가 동일한 데스크톱의 위치로 이동한 경우 결과를 얻을 수 있습니다.
  4. 각 로컬 고정 드라이브의 루트에서 아래로 네 수준을 검색합니다.
  5. 네 개의 디렉터리 제한 없이 1-3단계를 반복합니다.

참고

링크 추적 체계는 최종 사용자에게 투명합니다. 그러나 항상 긍정적인 결과를 얻을 수 있는 것은 아니며 시간이 많이 소요될 수 있습니다.

 

셸 바로 가기에 대한 자세한 내용은 IShellLink를 참조하세요.

OLE 링크에 대한 자세한 내용은 IOleLink를 참조하세요.

NTFS 3.0 이상에서 파일에 대한 링크를 만들고 같은 도메인 내에 있는 NTFS 3.0 이상의 다른 볼륨으로 파일이 이동되면 추적 서비스에서 시간을 고려하여 파일을 찾을 수 있습니다. 또한 파일이 도메인 외부 또는 작업 그룹 내에서 이동되는 경우에도 찾을 수 있습니다.

볼륨의 NTFS 버전을 가져오려면 관리자 액세스 권한으로 명령 프롬프트를 열고 다음 명령을 실행합니다.

fsutil fsinfo ntfsinfoX:

여기서 X는 볼륨의 드라이브 문자입니다.

파일에 대한 링크를 만들면 대상 파일은 링크 원본으로 간주되고 링크의 작성자는 링크 클라이언트가 됩니다. 예를 들어 텍스트 문서에 연결하기 위해 셸 바로 가기를 만든 경우 텍스트 문서는 링크 원본이고 셸 바로 가기는 링크 클라이언트입니다.

분산된 링크 추적 서비스는 도메인 내에서 발생하는 다음과 같은 상황에도 파일 링크를 유지합니다.

  • 링크 원본 파일이 한 NTFS 파일 시스템 볼륨에서 동일한 도메인 내의 다른 볼륨으로 이동됩니다.
  • 링크 원본을 포함하는 컴퓨터의 이름이 변경됩니다.
  • 링크 원본 컴퓨터의 네트워크 공유가 변경됩니다.
  • 링크 원본 파일을 포함하는 볼륨이 동일한 도메인 내의 다른 컴퓨터로 이동됩니다.

또한 분산된 링크 추적 서비스는 이러한 상황이 도메인 내에서 발생하지 않는 경우 즉, 도메인 간에 발생하거나 작업 그룹 내에서 발생하는 경우에도 링크를 유지하려고 합니다. 링크 원본 컴퓨터의 네트워크 공유가 변경되는 경우 항상 링크를 유지할 수 있습니다. 또한 컴퓨터 내에서 링크 원본이 이동하는 경우에도 유지할 수 있습니다. 일반적으로 링크 원본이 다른 컴퓨터로 이동되는 경우 링크를 유지할 수 있지만 이런 형태의 추적은 시간이 지남에 따라 안정성이 떨어집니다.

링크 추적 기능은 주로 다음 두 시스템 서비스의 형태로 구현됩니다.

  • 분산된 링크 추적 클라이언트
  • 분산된 링크 추적 서버

분산된 링크 추적 클라이언트

분산된 링크 추적 클라이언트는 모든 컴퓨터에서 실행되며 해당 컴퓨터에 대한 링크 추적 작업을 관리합니다. 이러한 활동에는 링크 원본 검색 및 링크 원본 이동 처리가 포함됩니다. 링크 원본이 이동되면 서비스는 도메인 컨트롤러에서 실행되는 분산된 링크 추적 서버에 정보를 전달합니다.

분산된 링크 추적 서버

분산된 링크 추적 서버는 도메인의 각 도메인 컨트롤러에서 실행됩니다. 이 서비스는 컴퓨터의 추적 서비스에서 파일 및 볼륨 이동에 대한 알림을 수락하고 분산될 링크 추적 클라이언트가 링크 원본의 현재 위치를 쿼리할 수 있도록 합니다.

이 서버 서비스는 이동된 볼륨 및 파일에 대한 정보를 도메인 컨트롤러에 유지합니다. 이동에 대한 정보는 특정 크기 이상으로 증가할 수 없으며 불필요해지면 자동으로 제거됩니다.

링크 추적 서비스는 IShellLinkIOleLink 인터페이스에 의해 노출됩니다. 따라서 셸 바로 가기에서 사용됩니다. 예를 들어 사용자가 셸 바로 가기를 활성화할 때 IShellLink::Resolve 메서드가 호출되고 참조 파일을 찾을 수 없는 경우 추적 서비스가 자동으로 호출되어 파일을 찾습니다. 마찬가지로 IOleLink 구현이 BindToSource 메서드에서 파일을 찾을 수 없는 경우 자동으로 추적 서비스를 호출합니다.

분산된 링크 추적 서비스는 NTFS 파일 시스템에서만 사용할 수 있으며 NTFS 3.0 이상의 링크 원본에만 사용할 수 있습니다. 따라서 링크 원본이 FAT 파일 시스템 볼륨으로 이동되면 추적 정보가 손실됩니다. 또한 링크 원본이 NTFS 3.0 이상 간에 이동되지만 이동을 수행하는 컴퓨터가 이전 버전의 Windows를 실행하는 경우 링크 추적 정보가 손실됩니다. 링크 추적 정보가 손실되어도 링크 원본 파일 자체에는 아무런 문제가 없으며 분산된 링크 추적 서비스에서 추적할 수 없을 뿐입니다.

볼륨의 NTFS 버전을 가져오려면 관리자 액세스 권한으로 명령 프롬프트를 열고 다음 명령을 실행합니다.

fsutil fsinfo ntfsinfoX:

여기서 X는 볼륨의 드라이브 문자입니다.

이동식 미디어의 파일에 대한 링크는 유지되지 않습니다. 또한 시스템이 다시 부팅될 때까지 추적 서비스가 새 NTFS 파일 시스템 볼륨을 인식하지 못합니다. 새 볼륨은 다시 분할하거나, FAT 파일 시스템 볼륨을 NTFS 파일 시스템으로 다시 포맷하거나 새 외부 드라이브를 연결하여 사용할 수 있습니다.