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작업을 해줄필요가없는 이점이 있다.
댓글 없음:
댓글 쓰기