리눅스 하드링크 생성 실습

Creates a hard link
리눅스 하드 링크 설정
리눅스 하드 링크 생성 실습
파일 헤더의 위치정보를 기반으로 동일한 이름의 파일을 생성하는 링크

1 명령어[ | ]

ln 원본 링크파일

2 실습[ | ]

/test.txt 파일을 만들고 그에 대한 하드 링크 파일 /tmp/h_link.txt를 만들어보자.

  • 원본 파일 생성 및 확인
[root@CentOS ~]# echo hello > /test.txt
[root@CentOS ~]# cat /test.txt
hello
[root@CentOS ~]# ll /test.txt
-rw-r--r-- 1 root root 6 Jun 19 21:44 /test.txt
  • 하드 링크 생성 및 확인
[root@CentOS ~]# ln /test.txt /tmp/h_link.txt
[root@CentOS ~]# ll /tmp/h_link.txt
-rw-r--r-- 2 root root 6 Jun 19 21:44 /tmp/h_link.txt
[root@CentOS ~]# cat /tmp/h_link.txt
hello

3 cp와의 차이[ | ]

cp와 비슷하다고 생각할 수도 있으나, 사본이 아니라 말그대로 링크이다.

[root@CentOS ~]# cp /test.txt /tmp/copy.txt
[root@CentOS ~]# ls -i /test.txt
98116 /test.txt
[root@CentOS ~]# ls -i /tmp/h_link.txt
98116 /tmp/h_link.txt
[root@CentOS ~]# ls -i /tmp/copy.txt 
1962253 /tmp/copy.txt
→ cp는 inode number가 다른 사본을 생성하지만, 하드 링크는 inode number가 같다.
→ 즉 큰 파일에 대해 하드링크를 많이 만들어도 디스크용량은 전혀 차지하지 않는다.[1]
[root@CentOS ~]# find / -inum 98116 2>/dev/null
/tmp/h_link.txt
/test.txt
[root@CentOS ~]# find / -inum 1962253 2>/dev/null
/tmp/copy.txt

4 원본 삭제 실습[ | ]

[root@CentOS ~]# rm -f /test.txt
[root@CentOS ~]# ll /tmp/h_link.txt 
-rw-r--r-- 1 root root 6 Jun 19 21:44 /tmp/h_link.txt
[root@CentOS ~]# cat /tmp/h_link.txt 
hello
→ 심볼릭 링크와는 달리 원본을 삭제해도 아무 문제가 없다.
→ 실제 파일의 입장에서는 자신을 가리키는 포인터만 하나 사라진 것.
→ 단, 포인터가 하나도 남지 않게 되는 시점[2]에는 실제로 디스크에서도 삭제됨

5 같이 보기[ | ]

6 주석[ | ]

  1. 물론 inode 매핑 정보는 있으니 아주아주 조금은 차지하려나?
  2. 즉 모든 하드링크가 삭제되는 시점

7 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}