최근 수정 시각 : 2024-01-15 18:55:32

하드링크

1. 파일 시스템에서의 하드 링크2. 프로그램에서의 하드 링크
2.1. 경로(Path) 관점2.2. 예제2.3. Web에서의 용어 주의
3. Harddisk Link의 약자

1. 파일 시스템에서의 하드 링크

유닉스 계통에서 널리 쓰이고 있으며, 윈도우의 경우 비스타부터 지원되고 있다.

동일한 데이터를 가리키는 두 개의 논리적인 파일을 만드는 방법. 동일한 파일 ID를 갖기 때문에, 한쪽을 삭제해도 파일은 하드디스크에 남아 있다. 모든 하드 링크를 삭제해야만 온전히 파일을 삭제할 수 있다.

반대되는 개념은 심볼릭 링크. 이것은 윈도우에서 단축 아이콘과 비슷하다. 다른 점은 lnk[1] 확장자가 없다는 것.

2. 프로그램에서의 하드 링크

절대 경로(Absolute Path)를 입력하여 리소스를 링크하는 방법.
반대 개념은 상대 경로(Relative Path)를 입력하여 링크하는 방법. 상대 링크(Relative Link)[2]라고 한다.

2.1. 경로(Path) 관점

절대 경로는 트리 구조(Tree-structured directory)의 특정 리소스 집합에서 Root부터 시작하는 경로를 제시하는 것으로 현실의 예로
"대한민국 서울특별시 종로구 청와대로 1로 가면 청와대임"
이라 지정하는 것이다.

상대 경로는 트리 구조의 특정 리소스 집합에서 참조를 시작하는 node에서부터의 경로를 제시하는 것으로 현실의 예로
"집 밖으로 나가 보이는 큰길 따라 옆으로 두 블럭 가면 청와대임."
이라고 지정하는 것이다.
  • 시작하는 node에 대한 해석은 시스템마다 다르다. URL(Web)에서는 위치를 지정하는 리소스가 위치한 디렉토리부터 시작한다.
  • 그 외에는 경우에 따라 다른데, 위치를 지정하는 리소스부터 시작하는 경우가 있어 이 경우 소속 디렉토리부터 경로를 지정함을 기술하려면 "./"로 시작하여 리소스가 위치한 디렉토리부터 시작함을 명시해야 한다. 많은 Unix계열 shell(+ powershell)이 이걸 구분 잘 못하기 때문에(특히 프로그램 실행을 명령할 때) Relative Path를 기술할 때는 일단 점부터 찍고 시작하는 행위를 습관화 하는게 편하다.

2.2. 예제


다음과 같은 리소스 구조가 있다고 하자.
    /
        css/
            main.css
            header.css
            about.css
        detail/
            post-view.htm
            post-edit.htm
        index.htm
        about.htm


post-view.htm에서 about.htm으로 가는 경로를 다음과 같이 제시하면 상대경로이다.
href="../about.htm"

Resource Path는 '/'[3]로 node를 분리하는데, 위의 경우 ["..", "about.htm"] 의 형태로 분리된다.
여기서 ".."는 상위 디렉토리로 가라는 지시어이다.
detail/ 디렉토리를 나가게 된다.
그 후 "about.htm"을 찾게 된다.

절대 경로로 지정할 경우 다음과 같이 지정할 수 있다.
href="/about.htm"

첫 번째 문자가 "/"로 시작하면 절대 경로로 인지하는데, 이 경우 리소스 tree의 root부터 탐색하게 된다.

별개로 시작 문자가 "."인 경우 현재 디렉토리를 의미한다. 예를 들어 post-view.htm에서 post-edit.htm을 가리키고 싶을 경우 "./post-edit.htm"의 형태로도 지정할 수 있다.

사용례
  • URL : Web 리소스 위치를 지정하는 주소, hyperlink(anchor tag) 등에서 리소스를 지정할 때 활용된다.
  • URI : 프로그램에서 자원의 위치를 지정하는 주소. URL을 범용화 한 것이라고 보면 된다. 컴퓨터 파일 지정에도 사용된다. 즉 ".."같은 상대경로도 윈도우즈 파일탐색기 주소창에 쳐보면 잘 먹는다.

2.3. Web에서의 용어 주의

Web에서 Relative URL이라는 용어가 있는데, 절대/상대 경로의 여부가 아닌 Protocol과 도메인 지정여부로 결정한다. 다음은 전부 Relative URL이다.
  • detail-view.htm
  • ../locale/en.json
  • /js/query/data-query.js


다음은 Absolute URL이다.
  • https://your-domain.ct.me//post/detail-view.htm
  • http://gogole.co.tm/analitics.go


그리고 둘의 특징을 조합한 Protocol Relative URL이 있다. Absolute URL에서 Protocol만 제외한 것으로 Protocol은 현재 리소스에 접근할 때 사용한 프로토콜을 따른다.
  • //archive.org/14/23/54/unknown.htm

때문에 웹에서 Link는 Relative의 개념이 혼재하고 있다. Absolute Path인데도 Domain이나 Protocol이 없으면 그냥 Relative Link라고 설명할 수 있다는 것이다. 오늘날 용어 추세는 Relative URL을 사용하면 Relative Link라고 부르니, 경로의 상대성을 말하고자 한다면 Absolute Path, Relative Path라고 명시 해주어야 한다.

3. Harddisk Link의 약자

파일:rain_33314_107309_ed_map_see.jpg
파일:99b9838920b5c6d2fc3736e15da7d1.png
컴퓨터, 인터넷 초보자들이 주로 저지르는 실수.

자료를 올린답시고 자신의 하드의 전체경로를 복사 붙여넣기하는 행위를 가리킨다. 당연히 다른 사람들은 확인하거나 볼 수 없다.

매우 드물게 자신의 하드에도 같은 경로에 같은 파일이 있어서 그 파일이 보이는 황당한 사태를 경험할 때도 있다. 역으로 이걸 이용해 낚시를 할때도 있다. 의외로 하드링크를 모르는 사람들이 많아서 종종 이 낚시에 넘어갈 때가 있다.

예) 어떤 게임 스크린샷 폴더의 1번 스크린샷 경로를 링크해서 다른 사람이 찍은 1번 스크린샷을 보여준 뒤 "난 너희집 컴을 해킹했다"고 하는 낚시.


[1] 바로가기 확장자이다.[2] 웹에서는 Path, URL에서의 Absolute | Relative 용어 혼재 때문에 대개는 그냥 링크라고 칭한다. 아래 후술.[3] Windows에서는 backslash(\\)를 사용한다. 한국의 경우 원 기호(\)로 표현된다.