ln 은 파일/디렉터리 간link
(연결짓는) 명령어이다.
-s
(symbolic): 심볼릭 링크를 생성
-f
(force): 이미 존재하는 링크를 강제로 덮어씁니다.
-v
(verbose): 링크 생성 과정을 상세하게 출력합니다.
-n
(no-dereference): 대상이 심볼릭 링크인 경우, 원본 파일을 참조하지 않고 링크 그 자체를 생성합니다.
-i
(interactive): 이미 존재하는 파일에 대해 덮어쓸 것인지 사용자에게 확인합니다
크게 심볼릭 링크
와 하드 링크
로 구분된다.
어떤 파일이 원본 파일/디렉터리에 대해 참조
를 갖도록 link 를 건다.
'참조'만 하기 때문에,
링크 파일(원본 파일로 링크를 건 파일)을 삭제하더라도 원본 파일에 아무런 영향을 미치지 않는다.
ln -s [원본 파일/디렉터리 경로] [링크 파일/디렉터리 경로]
ln -s test1 test2
test2 라는 심볼릭 링크 파일을 생성하고, 해당 파일을 test1 이라는 원본 파일과 link 한다.
--> cd test2
로 들어가면, 사용자가 실제 이동한 경로는 test1
이 된다.
'notificator-1.0.0-RELEASE' 라는 디렉터리가 존재한다.
[hso100@localhost ~]$ ll
drwxrwxr-x. 6 hso100 hso100 153 5월 26 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 8월 9 00:55 notificator -> notificator-1.0.0-RELEASE
drwxrwxr-x. 6 hso100 hso100 153 5월 26 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 5월 26 21:36 WEB-INF
drwxrwxr-x. 3 hso100 hso100 36 5월 26 21:36 conf
drwxr-xr-x. 2 hso100 hso100 6 2월 22 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 2월 22 2022 run
-rwxr-xr-x. 1 hso100 hso100 350 10월 25 2020 shutdown.sh
-rwxr-xr-x. 1 hso100 hso100 846 10월 25 2020 startup.bat
-rwxr-xr-x. 1 hso100 hso100 1314 5월 26 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 5월 26 21:36 WEB-INF
drwxrwxr-x. 3 hso100 hso100 36 5월 26 21:36 conf
drwxr-xr-x. 2 hso100 hso100 6 2월 22 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 2월 22 2022 run
-rwxr-xr-x. 1 hso100 hso100 350 10월 25 2020 shutdown.sh
-rwxr-xr-x. 1 hso100 hso100 846 10월 25 2020 startup.bat
-rwxr-xr-x. 1 hso100 hso100 1314 5월 26 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
inode 란??
- Linux/Unix의 파일 시스템에서 사용되는 자료구조
- 모든 파일/디렉토리에는 1개의 inode 를 가지고 있음 (1개의 inode는 64byte로 이루어짐)
- 각 inode 는 해당 파일의 소유권/허가권/파일 종류등의 정보/해당 파일의 실제 데이터 위치(=주소)도 가지고 있음
- inode가 모여있는 공간이 inode블록
- 어떤 한 파일/디렉토리를 만들게 되면, 1개의 inode가 만들어짐.
그 inode가 inode Table 에 등록되고,
등록되는 entry-number 를 그 inode에 대한 inumber 라고 함
ln [원본 파일/디렉터리 경로] [링크 파일/디렉터리 경로]