파일의 정보들이 저장되어 있습니다.
Accessed Time
, Size
, UID
, GID
, Blk1
, Blk2
name + inode + data
: 하나의 파일을 이룹니다.
먼저 파일 하나를 생성합니다.
% vim pineapple
안녕하세요
% ls -ali
258218 -rw-rw-r-- 1 ubuntu ubuntu 16 Aug 18 08:20 pineapple
결과로 나오는 파일 리스트의 첫 번째 열이 inode 넘버
입니다.
세 번째 열은 하드 링크의 개수
를 의미합니다.
fileName(hard link) + inode1(원본파일) + fileData(원본파일)
을 통해 원본 파일과 쌍둥이 격인 파일이 됩니다.pineapple
이란 파일을 원본
으로 두고 hello
라는 하드 링크 파일
만들기
% ln pineapple hello
% ls -ali
258218 -rw-rw-r-- 2 ubuntu ubuntu 16 Aug 18 08:20 hello
258218 -rw-rw-r-- 2 ubuntu ubuntu 16 Aug 18 08:20 pineapple
만들어진 하드 링크 파일(hello
)은 원본 파일 pineapple
과 완벽히 똑같습니다.
만약 하드 링크 파일 hello의 내용을 수정
해도 원본 파일인 pineapple에 그대로 적용
됩니다.
% vim hello
안녕하세요
hello
% cat pineapple
안녕하세요
hello
Link Data
에 원본 파일 이름(name
)의 경로가 저장되어 있어 원본 파일을 가리킬 수 있게 됩니다.심볼릭 링크는 화살표로 원본 파일을 나타냅니다.
% ln -s pineapple hello_symbolic
% ls -ali
258197 lrwxrwxrwx 1 ubuntu ubuntu 9 Aug 18 08:30 hello_symbolic -> pineapple
258218 -rw-rw-r-- 2 ubuntu ubuntu 16 Aug 18 08:20 pineapple
링크를 생성할 때 절대 경로
와 상대 경로
로 생성할 수도 있습니다.
% ln -s /home/test/pineapple hello
심볼릭 링크 파일이 생성되어 있는 상태에서 원본 파일 pineapple
을 지우면
기존 심볼릭 링크 파일의 링크가 깨집니다.
% rm pineapple
% ls -ali
이전에 지운 파일과 같은 이름으로 파일을 생성하면 다시 연결됩니다.
% touch pineapple
% ls -ali
258218 -rw-rw-r-- 1 ubuntu ubuntu 16 Aug 18 08:20 hello
258197 lrwxrwxrwx 1 ubuntu ubuntu 9 Aug 18 08:30 hello_symbolic -> pineapple
258220 -rw-rw-r-- 1 ubuntu ubuntu 0 Aug 18 08:31 pineapple
그리고 심볼릭 링크는 경로로 원본을 알 수 있기 때문에
링크 파일이나 원본 파일이 기존과 다른 곳으로 이동되면 링크가 깨지게 됩니다.
% mv hello_symbolic /tmp/hello_symbolic
% cd /tmp
:/tmp% ls -ali
만약 심볼릭 링크를 생성할 때 절대 경로
로 지정해줬다면 링크 파일을 이동해도 여전히 링크와 연결된 경로가 절대경로
이므로 링크는 살아있게 됩니다.
$ ln -s /home/ubuntu/pineapple hello
$ ls -ali
258220 lrwxrwxrwx 1 ubuntu ubuntu 22 Aug 18 08:49 hello -> /home/ubuntu/pineapple
258219 -rw-rw-r-- 1 ubuntu ubuntu 6 Aug 18 08:44 pineapple
$ mv hello /tmp
$ cd /tmp
/tmp$ ls -ali
반면 하드 링크의 경우 원본 파일을 지워도, 이동해도 하드 링크는 여전히 살아있습니다.
% mv pineapple /tmp/
% ls -ali
이전에 tmp
로 이동했던 심볼릭 링크 파일은 이제 원본 파일이 같은 경로에 왔으므로 다시 링크가 살아납니다.
% cd /tmp
:/tmp% ls -ali