이번 시간에는 link(이하 링크) 파일에 대해 알아보고자 한다.
링크는 Hardlink와 Symboliclink로 나뉘어지며 상세한 내용은 아래와 같다.
1.Hardlink(하드링크)
1.1. inode number가 동일한 완벽하게 같은 파일(inode 넘버 공유)
1.2. inode number: Linux에서 파일과 디렉토리를 관리하는 고유한 번호
1.3. 사용법
# ln 원본파일 대상파일
1.4. 단점
1.4.1. 동일한 Partition
1.4.2. 동일한 File System 사용
1.4.3. 디렉토리 Link 불가
2.Symboliclink(심볼링크)
2.1. Windows의 바로가기 아이콘
2.2. 대상파일이 원본파일의 이름을 참조함
2.3. 사용법
# ln -s 원본파일 대상파일
2.4. 단점
2.4.1 원본파일의 이름이 삭제되면 참조 불가
그림으로 보면 다음과 같다.
a.txt 라는 오리지널 파일이 있을 떄, aa.txt로 하드링크시 a.txt를 지워도
inode는 그대로이기 떄문에 aa.txt 파일은 문제가 없다.
하지만 심볼링크는 다르다. a.txt를 참조한 aaa.txt가 있다고 할떄
aaa.txt는 파일이름을 참조하므로 a.txt을 지우면 파일을 찾지 못한다.
a.txt을 새로만들어도 inode가 다르기 때문이다.
만일 inode를 삭제하면 a.txt aa.txt 둘다 사라짐, name은 껍데기, inode가 핵심
find / -inum 번호 -exec rm {} \;
예시를 들어 설명해보면 다음과 같다.
a.txt 라는 파일이 있을 떄 aa.txt 라는 파일로 하드링크를 하면
inode, 생성시간, 파일크기 등 모든 속성이 같음을 확인할 수 있다.
a.txt 파일을 aaa.txt로 심볼링크 했을 떄, ls로 확인해보면 aaa.txt가 a.txt를 참조하고 있음을 화살표 모양으로 확인할 수 있다. 또한 하드링크와 달리 inode가 동일하지 않다.
만일 a.txt 파일을 지우고 ls 확인을 해보면 참조할 대상이 사라졌으므로 aaa.txt 상태가 변했음을 확인할 수 있다.
a.txt와 동일하게 하드링크 해두었던 aa.txt 파일을 반대로 a.txt 파일로 하드링크하면
aaa.txt가 살아남을 확인 할 수 있다. a.txt 파일의 이름을 참조하기 떄문이다.
그렇다면 다시 a.txt 파일을 지우고 cat 명령어로 새로운 a.txt 파일을 생성하면 어떻게 될까?
겉보기엔 aaa.txt가 a.txt를 참조하지만 세부적으로 살펴보면 다름을 알 수 있다.
aaa.txt는 이름이 'a.txt'인 파일을 참조하기 떄문에 세부 속성까지는 신경쓰지 않는다.
이에 따라 하드링크와 달리 inode가 다름을 확인할 수 있다.
aa.txt 파일을 삭제후, a.txt 파일을 기준으로 하드링크를 한다.
그다음 ls 세부명령어로 확인했을떄 inode가 같음을 알 수 있다.
파일을 삭제하는 명령어 rm도 있지만 inode가 동일함을 이용해 삭제하는 방법도 있다.
find / -inum 번호 -exec rm {} \;
해당 명령어에 inode 넘버를 입력하면 해당 넘버가 같은 파일들이 동시에 삭제됨을 확인할 수 있다.
'linux' 카테고리의 다른 글
디스크관리 1 (0) | 2023.03.06 |
---|---|
사용자 그룹관리(/etc/passwd와 /etc/group) (0) | 2023.03.04 |
파일과 디렉토리의 권한 설정 (0) | 2023.03.02 |
압축과 아카이브 (0) | 2023.03.02 |
리눅스 기본명령어 (0) | 2023.02.28 |