OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] 파일 링크 - 하드링크, 심벌릭 링크

주누다 2015. 1. 5. 23:55
반응형

파일 링크

- 파일 링크는 기존에 있는 파일에 새로운 파일명을 붙이는 것.

- 복잡한 디렉터리 계층 구조를 포함 파일명이 복잡할 경우

 짧은 줄인 다름 이름을 붙여서 간단하게 사용할 때 유용.

- 하드 링크와 심벌릭 링크가 있음.

  -> 하드 링크 : 기존 파일에 새로운 파일명을 추가로 생성하는 것.

  -> 심벌릭 링크 : 원본 파일을 가리키는 새로운 파일을 만듬(Windows의 바로가기 기능과 같다고 보면 됨)


리눅스 파일의 구성

- 리눅스에서 파일은 '파일명 + inode + 데이터 블록' 으로 구성.

  -> 파일명 : 사용자가 파일에 접근할 때 사용하는 파일의 이름

  -> inode : 파일에 관한 정보를 가지고 있는 특별한 구조체로서, 

외부적으로는 번호로 표시,

내부적으로는 파일의 종류 및 크기, 소유자, 파일 변경 시간, 파일명 등 상세정보와 데이터 블록의 주소가 저장.

※ 'ls -l' 명령으로 출력되는 정보가 사실 inode에 저장되어 있는 파일 상세 정보임.

  -> 파일의 inode 번호는 'ls -i'명령으로 확인 가능(파일 명 앞에 출력된 숫자가 inode번호)

  -> 파일 이름은 다르지만 inode번호가 같다면 같은 파일



- 경로 설정시 '절대 경로' 로 설정 해야함.... 




하드 링크 만들기

 ln

- 기능 : 파일의 링크를 생성

- 형식 : ln [옵션] 원본파일명 링크파일명

- 옵션 : -s => 심벌릭 링크를 생성함.

- 사용 예 : ln test lntest, ln -s lntest 


ex)

user@ubuntu:~/ch2$ ls -l

-rw-r--r-- 1 user user 223 1월12일 10:00 test

user@ubuntu:~/ch2$ ln test test_ln

user@ubuntu:~/ch2$ ls -l

-rw-r--r-- 2 user user 223 1월 12일 10:00 test

-rw-r--r-- 2 user user 223 1월 12일 10:00 test_ln

user@ubuntu:~/ch2$ 



- inode와 연결된 파일명이 하나일 때는 1이지만 새로운 하드링크가 생성되었으므로

 2로 바뀜.

- ls -i로 파일의 inode값을 비교해보면 같은 것을 확인

ex)

user@ubunut:~/ch2$ ls -i

1055628 test 1055628 test_ln

user@ubunut:~/ch2$ 

- 하드 링크는 같은 파일에 이름만 다르게 붙이는 것.

- 복사는 완전히 독립적인 파일을 만드는 것.

- 하드 링크로 만들 파일을 수정하게 되면 원본 파일의 내용도 수정되어있음.

- inode 번호가 다르다면 서로 다른 파일


- 원본 파일이나 하드 링크로 새로 만든 파일을 삭제하면 하드 링크의 개수가 줄어듬.

- 삭제되고 남은 파일명으로 계속 사용 가능.

- 'rm'명령은 정확하게 말하면 하드 링크 값을 하나씩 줄이는 것.

- 이 값이 0이 되어서야 해당 inode와 데이터 블록의 데이터를 삭제하는 것. 



심벌릭 링크 : -s 옵션

 ln -s

- 심벌릭 링크는 Windows의 바로가기처럼 파일을 가리키는 파일

- 심벌릭 링크의 inode 를 보면 원본 파일과 다름.

- 'ls -l' 명령으로 확인해보면 파일 종류가 'l(소문자 L)'로 표시.

- 파일명도 '->'를 사용하여 원본파일이 무엇인지 알려줌.

- 파일의 크기가 5로 나오는 경우(크기가 5라는 것은 원본 파일 경로의 길이임.)

- 원본 파일의 경로는 'ln -s' 명령으로 심벌릭 링크를 생성할 때 지정한 경로가 저장됨.

- 하지만 심벌릭 링크의 내용을 출력하면, 원본 파일의 경로가 출력되는 것이 아닌

 원본파일의 내용이 출력.

- 심벌릭 링크를 열고 수정하면 원본 파일이 수정됨.


특징

- 파일 종류가 l(소문자 L)로 표시

- 하드 링크의 개수가 하나. 즉, 원본 파일에 이름을 추가한 것이 아님.

- 파일 이름 뒤에 원본 파일의 이름이 표시(-> test)

- inode 번호가 원본 파일과 다름. 즉, 원본 파일과 심벌릭 링크 파일은 별개의 파일



심벌릭 링크가 하드 링크에 비해 탁원한 점

- 하드 링크는 디렉터리에 생성할 수 없고 다른 파일 시스템에 생성할 수 없음.

- 심벌릭 링크는 디렉터리에도 지정할 수 있고, 파일 시스템이 달라도 생성할 수 있다는 것.

- 심벌릭 링크는 원본 파일이 삭제되면 심벌릭 링크로 연결할 수 없다는 점 주의.




반응형