ln 링크 명령어

박영준·2024년 8월 9일
0

Linux

목록 보기
8/8

1. 개념

ln 은 파일/디렉터리 간link(연결짓는) 명령어이다.

2. 옵션

  • -s (symbolic): 심볼릭 링크를 생성

  • -f (force): 이미 존재하는 링크를 강제로 덮어씁니다.

  • -v (verbose): 링크 생성 과정을 상세하게 출력합니다.

  • -n (no-dereference): 대상이 심볼릭 링크인 경우, 원본 파일을 참조하지 않고 링크 그 자체를 생성합니다.

  • -i (interactive): 이미 존재하는 파일에 대해 덮어쓸 것인지 사용자에게 확인합니다

3. 구분

크게 심볼릭 링크하드 링크로 구분된다.

1) 심볼릭 링크 (Symbolic)

(1) 개념

  • 어떤 파일이 원본 파일/디렉터리에 대해 참조를 갖도록 link 를 건다.

    '참조'만 하기 때문에,
    링크 파일(원본 파일로 링크를 건 파일)을 삭제하더라도 원본 파일에 아무런 영향을 미치지 않는다.

2) 문법

ln -s [원본 파일/디렉터리 경로] [링크 파일/디렉터리 경로]

3) 예시

예시 1

ln -s test1 test2

test2 라는 심볼릭 링크 파일을 생성하고, 해당 파일을 test1 이라는 원본 파일과 link 한다.
--> cd test2 로 들어가면, 사용자가 실제 이동한 경로는 test1 이 된다.

'notificator-1.0.0-RELEASE' 라는 디렉터리가 존재한다.

[hso100@localhost ~]$ ll

drwxrwxr-x.  6 hso100 hso100   153  526 21:38 notificator-1.0.0-RELEASE

생략...

notificator 라는 디렉터리를 생성하고, 해당 디렉터리를 notificator-1.0.0-RELEASE 디렉터리와 link 한다.

ln -s notificator-1.0.0-RELEASE notificator

그러면 -> 표시와 함께 해당 디렉터리를 확인할 수 있다.

[hso100@localhost ~]$ ll

lrwxrwxrwx.  1 hso100 hso100    25  89 00:55 notificator -> notificator-1.0.0-RELEASE
drwxrwxr-x.  6 hso100 hso100   153  526 21:38 notificator-1.0.0-RELEASE

생략...

각 디렉터리로 들어가 확인해봤을 때, 파일 목록이 동일했다.
notificator 디렉터리나 notificator-1.0.0-RELEASE 디렉터리 모두 notificator-1.0.0-RELEASE 디렉터리를 가리키기 때문이다.

# notificator 디렉터리의 파일 목록
[hso100@localhost ~]$ cd notificator
[hso100@localhost notificator]$ ll
drwxrwxr-x. 4 hso100 hso100       28  526 21:36 WEB-INF
drwxrwxr-x. 3 hso100 hso100       36  526 21:36 conf
drwxr-xr-x. 2 hso100 hso100        6  222  2022 logs
-rw-r--r--. 1 hso100 hso100 12031634  2월 22  2022 notificator-1.0.0-RELEASE-fat.jar
drwxr-xr-x. 2 hso100 hso100        6  222  2022 run
-rwxr-xr-x. 1 hso100 hso100      350 1025  2020 shutdown.sh
-rwxr-xr-x. 1 hso100 hso100      846 1025  2020 startup.bat
-rwxr-xr-x. 1 hso100 hso100     1314  526 21:38 startup.sh

# notificator-1.0.0-RELEASE 디렉터리의 파일 목록
[hso100@localhost ~]$ cd notificator-1.0.0-RELEASE
[hso100@localhost notificator-1.0.0-RELEASE]$ ll
drwxrwxr-x. 4 hso100 hso100       28  526 21:36 WEB-INF
drwxrwxr-x. 3 hso100 hso100       36  526 21:36 conf
drwxr-xr-x. 2 hso100 hso100        6  222  2022 logs
-rw-r--r--. 1 hso100 hso100 12031634  2월 22  2022 notificator-1.0.0-RELEASE-fat.jar
drwxr-xr-x. 2 hso100 hso100        6  222  2022 run
-rwxr-xr-x. 1 hso100 hso100      350 1025  2020 shutdown.sh
-rwxr-xr-x. 1 hso100 hso100      846 1025  2020 startup.bat
-rwxr-xr-x. 1 hso100 hso100     1314  526 21:38 startup.sh

home/hso100/tomcat/webapps/ 경로에 원본파일로 활용할 파일(file.txt)을 생성했고

[hso100@localhost ~]$ cd home/hso100/tomcat/webapps/
[hso100@localhost webapps]$ touch file.txt

구분을 위해 file.txt 를 다음처럼 편집(vi)해두었다.

This is file.txt

/home/user/link.txt 경로 상에 txt 파일을 생성하고, 해당 파일을 /home/user/documents/file.txt 경로상에 있는 txt 파일과 link 한다.

[hso100@localhost ~]$ ln -s /home/hso100/tomcat/webapps/file.txt /home/hso100/link.txt

/home/hso100/ 경로에서 link 파일을 들어가보면

[hso100@localhost ~]$ vi link.txt

file.txt 에 편집해둔 텍스트가 나타나게 된다.

This is file.txt

2) 하드 링크 (Hard)

1) 개념

  • 동일한 inode를 가지는 원본 파일을 가리키는 별도의 파일이고, 각 파일은 고유한 inode 번호를 가짐
    (단, 하드 링크는 동일한 파일 시스템에서만 작동)
  • 원본/링크 파일 모두 동일한 inode 를 가리키기 때문에,
    원본 파일을 삭제해도 하드 링크는 원본 파일의 데이터를 가지고 있기 때문에 데이터는 그대로 유지됨

inode 란??

  • Linux/Unix의 파일 시스템에서 사용되는 자료구조
  • 모든 파일/디렉토리에는 1개의 inode 를 가지고 있음 (1개의 inode는 64byte로 이루어짐)
  • 각 inode 는 해당 파일의 소유권/허가권/파일 종류등의 정보/해당 파일의 실제 데이터 위치(=주소)도 가지고 있음
  • inode가 모여있는 공간이 inode블록
  • 어떤 한 파일/디렉토리를 만들게 되면, 1개의 inode가 만들어짐.
    그 inode가 inode Table 에 등록되고,
    등록되는 entry-number 를 그 inode에 대한 inumber 라고 함

2) 문법

ln [원본 파일/디렉터리 경로] [링크 파일/디렉터리 경로]

참고: [Linux] 리눅스에서 링크 파일, 디렉터리 만드는 방법, ln 명령어
참고: inode 란??

profile
개발자로 거듭나기!

0개의 댓글