ln

man ln

이라고 하면 뜨는 말...

LN(1) FSF LN(1)
NAME
ln - make links between files

----

link는 윈도우에서의 단축아이콘 개념으로 생각하면 되는데 물론

unix에서 link가 먼저이고 그 내용도 좀 다르다.

(단축아이콘은 symbolic link와 비슷하다.)

모든 file system은 file을 나타내는 정보를 모아놓은 file이 있

는데 EXT2 file system에서는 inode라고 한다. 각 file들은 하나

의 고유한 inode로 나타내어진다.



1. Hard Link

제목 그대로 졸라 강력한 링크라는 의미이다. ^^

file 하나를 생성해놓고

# ln file1 file2

라고 해보면 file1과 똑같은 file2가 생길 것이다. file1의 복제

에 성공한 것이다.

# ls -i *

위와 같이 해보자. man page에서 알 수 있겠지만 inode의 index

number를 찍는 option으로 file list를 보는 것이다.

inode의 index가 같음을 알 수 있다.

그리고

# ls -al

을 해보자. Owner info 옆에 나오는 숫자가 link 갯수이다.

ex)

drwxr-xr-x 2 root root 4096 Oct 17 10:36 ./
drwxr-xr-x 7 root root 4096 Oct 17 09:54 ../
-rw-r--r-- 2 root root 5 Oct 17 10:35 dodo
-rw-r--r-- 2 root root 5 Oct 17 10:35 dodo1
-rw-r--r-- 1 root root 5 Oct 17 10:36 dodo2

dodo와 dodo1은 hard link된 file이고 dodo2는 link가 안된 파일이다.

이제 재미있는 것을 보게 될 것이다.

hard link된 파일의 내용을 수정하고 저장하자. 그러고 나서 링크된

파일 두 개를 열어보면 둘 다 내용일 바뀌었음을 알 수 있다.

#
#Hard Link된 파일 중 하나를 수정했을 때, 나머지 파일들의 내용도
#변경된다.
#

그런데 이중 파일 하나를 지우면 해당 파일만 지워진다. ls -al을 해

보면 link 수가 1로 되어 있는 것을 알 수 있다.

#
#Hard Link된 파일을 하나 지우면 해당 파일만 지워진다.
#


2. Symbolic Link (soft link)

이번에는 symbolic link에 대해서 알아보자. 단축아이콘이라는 개념

으로 생각하면 된다.

# ln -s source destination

위와 같이 수행을 해보자. 그러면 새로 생긴파일이 있을 것이다.

예를 들어서

# ln -s dodo1 dodo

라고 했을 때,

# ls

해보면

dodo@ dodo1 dodo2

위와 같이 나온다. symbolic link된 file name 옆에 @ 가 달려 있다.

# ls -al

이라고 하면

lrwxrwxrwx 1 root root 5 Oct 17 10:41 dodo -> dodo1

아주 친절하게 dodo는 dodo1을 가린킨다는 것을 말해준다.

file size는 아주 작다. 단지 말 그대로 symbolic link이기 때문이다.

symbolic link에서는 source file만 실제 내용이 있는 것이고 symbolic

link에 대해서 어떤 action을 가하면 모두 실제 파일인 source file에

그 action이 가해지는 것이다.

하지만 symbolic link를 rm으로 지우면 그냥 link file만 지워진다.


3. 정리

두 가지 link 중에서 필요한 것을 골라서 사용하면 된다. 내가 link에

대해서 관심을 갖은 것은 어제 만든 프로그램을 같이 개발하는 다른 사

람들과 사용을 해야 하는데, 내가 사용하는 개발 디렉토리 자체에 들어

와서 사용하는 것은 불편하고 그렇다고 binary를 다 copy해주기에는 앞

으로 지속적인 update가 필요하기 때문이다.

즉, 모두가 access가능한 /usr/bin 같은 곳에 symbolic link만을 만들

어주면 어디선지 access가 가능하며 프로그램에 수정이 가해진다고 해

도 그에대한 특별한 update작업을 해줄필요가없는 이점이 있다.

댓글 없음: