소프트 링크

ln -s

심볼릭 링크라고 부르기도 한다. 유닉스 시스템에서도 지원하며, 윈도우에서는 NTFS이상의 파일시스템에서 지원한다. XP는 툴이 윈도우에 내장되어 있지 않아서 별도의 유틸을 사용해야 한다.

심볼릭 링크는 셸에서의 링크와 거의 비슷하지만, 차이점이라면 셸에서 지원하는 것이 아니라 파일시스템에서 지원한다는 점이 차이점이다. 심볼릭 링크는 원본과 비교해서 확장자도 똑같고, 실행도 되며, 실제로 그 곳에 파일(혹은 폴더)가 있는 것처럼 작동한다.

심볼릭 링크는 타겟 파일에 대한 경로로써 작동을 한다. 바로가기와 같은 느낌이라고 볼 수 있다. 즉 심볼릭 링크는 원하는 목적지에대한 경로를 저장하는 다른 이름이라고 볼 수 있다.

하드 링크

심볼릭 링크가 '별명'이라면, 하드 링크는 '다른 이름'이라고 할 수 있다. 원본이 삭제되었을 경우에 심볼릭 링크는 쓸모가 없어진다. 원본을 찾아가서 그 내용을 보여줘야 하는데, 원본이 사라졌기 때문이다. 하지만 하드 링크는 원본과 복사본의 개념이 없다. 어느 쪽이 원본인지 구별하지 않기 때문이다. C++ 등에서의 포인터와 같은 개념이라고 보면 된다.

하드 링크에는 덕분에 두 가지 제약이 있다. 하나는 같은 드라이브에 있어야 한다는 점(C드라이브에 있는 파일에 대해 D드라이브에 하드 링크를 만들 수 없음)이며, 다른 하나는 폴더는 하드 링크를 만들 수 없다는 점(파일만 하드 링크를 만들 수 있음)이다. 만약 폴더도 하드 링크를 만들 수 있게 된다면, 위의 심볼릭 링크에서의 예제와 같은(C:\test\test\test\test...)상황에서 시스템이 어디까지가 원본이며 어디까지가 링크인지 알 수 없기 때문이다.