ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 기본정리 ] 파일 링크
    Technique/LINUX 2016. 5. 3. 21:42
    반응형

    파일링크

    기존에 있는 파일에 새로운 파일명을 붙이는 것이다. 복잡한 디렉토리 계층 구조를 포함하여 파일명이 복잡할 경우, 짧게 줄인 다른 이름을 붙여서 간단하게 사용할 때 유용하다.


    ※ 리눅스 파일의 구성

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

    파일명은 사용자가 파일에 접근할 때 사용하는 파일의 이름이다. inode는 파일에 관한 정보를 가지고 있는 특별한 구조체로서 외부적으로는 번호로 표시되고, 내부적으로는 파일의 종류 및 크기, 소유자, 파일 변경 시간, 파일명 등 파일 상세 정보와 데이터 블록의 주소가 저장되어 있다.

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


    파일의 inode 번호는 ls -i 명령으로 확인할 수 있다. 파일명 앞에 출력된 숫자가 inode 번호다. 파일 이름은 다르지만 inode 번호가 같다면 같은 파일이다.



    하드링크

    기존 파일에 새로운 파일명을 추가로 생성하는 것

    ln 명령어로만든다.


    ln

    기능    파일의 링크를 생성한다

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

    옵션    -s : 심볼릭 링크 파일을 생성


    기존 파일에 새로운 파일명을 붙여서 하드 링크를 만들 수 있다.

    하드링크를 생성하게 되면 접근 권한 ( rw-r--r-- ) 다음에 나오는 숫자가 1에서 2로 바뀌었다.

    이 숫자는 하드 링크의 개수를 가르킨다.

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

    ls -i 옵션을 이용하여 두 파일의 inode 값을 비교해 보면 같다는 것을 알 수 있다.


    하드 링크와 파일을 복사한 것의 차이란?

    하드 링크는 같은 파일에 이름만 다르게 붙이는 것이지만, 복사는 완전히 독립적인 파일을 만드는 것이다.

    즉 링크로 생성한 파일명을 수정하면 원본 파일에도 영향이 발생한다.

    하지만 cp로 복사한 파일은 수정한다고 해서 원본 파일에 영향이 발생하는 경우는 없다

    inode 값이 같다는 것은 이러한 의미이다.


    원본 파일이나 하드 링크로 새로 만든 파일을 삭제하면 하드 링크의 개수가 다시 1로 줄어든다. 삭제되고 남은 파일명으로 파일을 계속 사용할 수 있다.

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

    이 값이 0 이되면 그때서야 해당 inode와 데이터 블록의 데이터를 삭제하는 것이다.



    심볼릭 링크

    원본 파일을 가리키는 새로운 파일을 만드는 것

    윈도우의 바로가기 기능과 개념이 같다.

    심볼릭 링크의 inode 번호를 보면 원본 파일과 다르다. 또한 ls -l 명령으롷 ㅘㄱ인해보면 파일 종류가 'l'로 표시되고 파일명도 '->'를 사용하여 원본 파일이 무엇인지를 알려준다.


    - 파일 종류가 l 로 표시된다.

    - 하드 링크의 개수가 하나이다. ( 원본이 늘어나는 것이 아니다 )

    - 파일 이름 뒤에 원본 파일의 이름이 표시된다 ( -> 원본 파일명 )

    - inode 번호가 원본 파일과 다르다. 즉 , 원본 파일과 심ㅁ볼릭 링크 파일은 별개의 파일이다.


    심볼릭 링크의 경우 파일의 크기가 5byte 같이 작은 편이다. 이것은 원본 파일의 경로의 길이이다. 

    원본 파일의 경로는 ln -s 명령으로 심볼릭 링크를 생성할 때 지정한 경로가 저장된다. 그러나 심볼릭 링크의 내용을 출력하면 원본 파일의 경로가 출력되는 것이 아니라 원본 파일의 내용이 출력된다. 이것이 심볼릭 링크이다.

    심볼릭 링크를 열고 수정하면 원본 파일이 수정된다.


    심볼릭 링크가 하드 링크에 비해 탁월한 점은 하드 링크는 디렉토리에 생성할 수 없고 다른 파일 시스템에 생성할 수 없지만 심볼릭 링크는 디렉토리에도 지정할 수 있고 파일 시스템이 달라도 생성할 수 있다는 것이다.

    다만 심볼릭 링크에서는 원본 파일이 삭제되면 심볼릭 링크로 연결할 수 없다는 점을 주의해야 한다.



    반응형

    'Technique > LINUX' 카테고리의 다른 글

    [ 기본정리 ] 셸에서 사용하는 특수문자  (0) 2016.05.04
    [ 기본정리 ] 셸  (0) 2016.05.04
    [ 기본정리 ] 경로  (0) 2016.05.03
    [ 기본정리 ] 디렉토리  (0) 2016.05.03
    [ 기본정리 ] 파일  (0) 2016.05.03

    댓글

Designed by Tistory.