[Linux] ln 명령어

2594 단어 TILlinuxTIL

파일 링크

리눅스에는 파일 링크라는 개념이 존재한다. 말 그대로 A에 저장되어 있는 실행파일이 하나 있는데, 이를 실행시키려면 굳이 A까지 가지 않더라도 B에서 실행시킬 수 있게 하는 것이다. 한마디로 프로그램의 바로가기 같은거다.

링크 거는 방법에 따라 특징이 달라지는데, 하드 링크와 소프트 링크로 나뉜다.

하드 링크

원본 데이터와 직접적으로 연결시켜 만드는 방법이다.

하나의 동일한 파일을 디스크의 다른 곳에 배치하여 여러 이름으로 사용되는 형식이다. 하드 링크는 파일에만 부여할 수 있다. 원본 파일과 같은 I-node 값을 가지고 있다. 그렇기 때문에 원본 파일을 수정해도 하드 링크 파일이 수정되고, 하드 링크 파일을 수정해도 원본 파일이 수정된다.

소프트(심볼릭) 링크

프로그램의 바로가기처럼 원본 데이터를 가리키도록 주속 링크만 시켜두는 방법이다.

하나의 파일을 여러 이름으로 가리키게 하는 것으로 원본과 생성된 링크 파일은 완전히 다른 파일로 관리된다. 다른 파일이지만 I-node가 원본 파일 포인터를 가리키고 있어 원본 파일을 연결하는 효과를 가진다. 파일이나 디렉터리 모두 사용 가능하지만 일반적으로 디렉토리의 경로 단축이나 변경에 사용된다.

파일 링크를 쓰는 이유

  • 경로 단축을 하기 위해서

    • 실제 리눅스에서는 부팅과 관련된 디렉토리는 /etc/rc.d 이지만 /etc의 바로 하위로 심볼릭 링크가 설정되어 있어 절대 경로 입력 할 때 rc.d를 생략해서 사용해도 되게 되어있다.
  • 데이터를 안전하게 보관하고 싶어서

    • 하나의 파일을 다른 사람과 공유하는데 그 파일을 누가 삭제해버렸다고 하면 그 파일은 그냥 사라지게 된다. 하지만 그 파일을 내 홈 디렉토리에 두고 사람들과 공유하기 위해 하드 링크를 걸어 파일을 생성해두면, 어느 파일이 삭제되어도 한 파일은 남아있게 된다.
    • 같은 데이터에 직접 연결되어 있어서 하나의 파일을 변경해도 다른 파일에 반영이 된다.

I-node

리눅스에서는 파일이나 디렉터리를 생성하면 I-node라는 번호가 임의로 부여된다. 이 번호를 기준으로 관리가 된다. ls -i 명령으로 확인할 수 있다. 파일명이 다르더라도 이 번호가 같으면 내부적으로는 같은 파일로 인식된다. 이렇게 하나의 파일을 여러 개의 이름으로 관리하거나 디렉토리 접근 경로를 탄축하는 형태를 링크라고 한다.

I-node는 리눅스 파일 시스템에서 사용하는 자료구조를 말한다. 파일이나 디렉토리의 소유권, 허가권, 파일 종류 등의 정보와 해당 파일의 실제 데이터가 어디 있는지 주소 등 여러가지 정보가 담겨져 있다.

링크 생성 명령어

하드 링크 또는 심볼릭 링크를 생성하는 명령어이다. 명령 실행할 때 옵션 없이 사용하면 하드 링크로 생성되고, -s 옵션을 사용하면 심볼릭 링크를 생성한다.

ln 사용법

$ ln [option] [원본 파일] [대상명]

옵션

-b(--backup) : 대상 파일이 이미 존재할 경우에 백업 파일을 만든 후에 링크 파일을 생성한다.
-s(--symbolic) : 심볼릭 링크를 생성할 때 사용한다.
-S(-suffix) : 백업 파일 생성시 원하는 suffix(접미사)를 지정할 수 있다.
-v(--verbose) : 링크 만드는 정보를 자세히 출력한다.
-f(--force) : 링크 파일 존재할 때 삭제하고 생성한다.
-i(--interactive) : 대상 파일이 존재할 경우 대상 파일을 지울 것인지 물어본다.

사용 예시

# test.sh라는 파일의 하드 링크 파일인 t를 현재 디렉토리에 생성한다.
ln test.sh t

# test라는 파일의 심볼릭 링크 파일인 t를 현재 디렉토리에 생성한다.
ln -s test.sh t

좋은 웹페이지 즐겨찾기