하 드 링크 와 소프트 링크 (2)
먼저 리 눅 스 시스템 에서 커 널 은 새로 만 든 모든 파일 에 인 노 드 (색인 노드) 를 할당 하고 모든 파일 에 유일한 인 노 드 번호 가 있 음 을 알 아야 합 니 다.파일 속성 은 색인 노드 에 저장 되 어 있 으 며, 파일 에 접근 할 때 색인 노드 가 안에 복사 되 어 파일 의 빠 른 접근 을 실현 합 니 다.
링크 는 파일 을 공유 하고 방문 하 는 사용자 의 여러 디 렉 터 리 항목 사이 에 관 계 를 맺 는 방법 입 니 다.Linux 에는 하 드 링크 (Hard Link) 와 소프트 링크 (Soft Link), 소프트 링크 는 심 볼 릭 링크 (Symbolic link) 라 고도 부른다.
하 드 링크
하 드 링크 는 포인터 로 파일 색인 노드 를 가리 키 며 시스템 은 inode 를 재배 치 하지 않 습 니 다.ln 명령 으로 하 드 링크 를 만 들 수 있 습 니 다.문법:
ln [options] existingfile newfile
ln[options] existingfile-list directory</CCID_CODE />
용법: 첫 번 째: "existingfile" 을 위 한 하 드 링크 를 만 듭 니 다. 파일 이름 은 "new file" 입 니 다.두 번 째: "directory" 디 렉 터 리 에 "existingfile - list" 에 포 함 된 모든 파일 에 같은 이름 의 하 드 링크 를 만 듭 니 다.자주 선택 할 수 있 는 [options] - f "new file" 의 존재 여부 와 상 관 없 이 링크 를 만 듭 니 다. -'new file' 이 존재 하면 링크 를 만 들 지 않 습 니 다.
다음은 예 를 들 어 보 겠 습 니 다.
$ ls –il
13058 -rwx - - - - - - 1 longcheng longcheng 48 8 5 16:38 file1
13059 -rwx - - - - - - 1 longcheng longcheng 57 8 5 16:40 file2
$ ln file2 file2hard
$ ls –il
13058 -rwx - - - - - - 1 longcheng longcheng 48 8 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8 5 16:40 file2hard</CCID_CODE />
링크 를 만 들 기 전에 file 1 에 표 시 된 링크 수 는 1 이 고 링크 를 만 든 후 (1) file 1 과 file1hard 의 링크 수 는 모두 2 로 변 합 니 다.(2) file 1 과 file1hard 는 inode 번호 가 같 습 니 다 (3) file 1 과 file1hard 가 표시 하 는 파일 크기 도 같 습 니 다.ln 명령 을 수행 한 결 과 를 볼 수 있 습 니 다. file 1 과 file1hard 는 같은 파일 의 두 이름 입 니 다. 같은 색인 절 번호 와 파일 속성 을 가지 고 파일 file 1 의 하 드 링크 를 만 드 는 것 은 file 1 의 파일 색인 노드 에 현재 디 렉 터 리 에 새 지침 을 만 드 는 것 입 니 다.다음 그림 에서 rm file 2 와 같은 모든 것 을 삭제 할 수 있 습 니 다. 매번 지침 만 삭제 합 니 다.
링크 수 를 동시에 줄 여야 파일 내용 을 가리 키 는 모든 지침, 즉 링크 수 를 0 으로 줄 일 때 만 커 널 은 파일 내용 을 디스크 에서 삭제 할 수 있 습 니 다.현재 디 렉 터 리 논리 구조: (그림 이 표시 되 지 않 아 죄송합니다).
다른 디 렉 터 리 에 도 있 지만 같은 파일 시스템 에 파일 의 하 드 링크 를 만 들 수 있 습 니 다.file 1, file 2 를 디 렉 터 리 / home / longcheng / dir 1 에 설정 하고 아래 명령 은 / home / longcheng 에 file 2 의 하 드 링크 를 만 듭 니 다.
ln file2 /home/longcheng/file2hard</CCID_CODE />
다음 프로그램 은 dir 1 디 렉 터 리 의 모든 파일 을 디 렉 터 리 dir 2 에 하 드 링크 를 만 드 는 것 입 니 다.
$mkdir dir2
$ln /home/longcheng/dir1/* /home/longcheng/dir2</CCID_CODE />
ln – f existingfile new file 을 사용 했다 면 new file 이 존재 한다 면 원래 new file 이 어떤 파일 이 든 현재 사용자 가 쓰기 권한 만 있 으 면 new file 은 exisitngfile 의 하 드 링크 파일 이 됩 니 다.
하 드 링크 가 공간 을 절약 하 는 것 도 리 눅 스 시스템 이 파일 시스템 을 통합 하 는 전통 적 인 방식 이지 만 부족 한 점 이 있 습 니 다. (1) 서로 다른 파일 시스템 의 파일 간 에 링크 를 만 들 수 없습니다 (2) 슈퍼 사용자 만 디 렉 터 리 에 하 드 링크 를 만 들 수 있 습 니 다.많은 트 리 에서 루트 사용자 가 만 들 수 있다 고 말 하지만 필 자 는 학습 과정 에서 루트 사용자 라 도 만 들 수 없다 는 것 을 알 게 되 었 습 니 다. 제 시스템 은 Redhat 이 고 커 널 2.4, 2.6 을 모두 시도 해 보 았 습 니 다. 다른 시스템 에서 가능 한 지 아 닌 지 모 르 겠 습 니 다.
2. 소프트 링크 (심 볼 릭 링크)
소프트 링크 는 하 드 링크 의 부족 을 극복 하고 파일 시스템 의 제한 이 없 으 며 모든 사용자 가 디 렉 터 리 를 가리 키 는 심 볼 릭 링크 를 만 들 수 있 습 니 다.그래서 지금 은 더욱 광범 위 하 게 사용 되 고 더욱 큰 유연성 을 가 지 며 심지어 서로 다른 기계, 서로 다른 네트워크 를 넘 어 파일 을 연결 할 수 있다.
소프트 링크 를 만 들 려 면 ln 뒤에 옵션 – s 를 추가 하면 다음 예 를 들 어 보 겠 습 니 다.
$ ls -il
13058 -rwx - - - - - - 1 longcheng longcheng 48 8 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8 5 16:40 file2hard
$ln –s file1 file1soft
$ls -il
13058 -rwx - - - - - - 1 longcheng longcheng 48 8 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8 5 16:40 file2hard
13061 lrwxrwxrwx 1 longcheng longcheng 5 8 5 16:58 file1soft->file1</CCID_CODE />
위의 링크 후의 결 과 를 보면 소프트 링크 와 하 드 링크 의 차 이 는 개념 뿐만 아니 라 실현 에 있어 서도 다르다 는 것 을 알 수 있다.차이 점: 하 드 링크 원본 파일 & 링크 파일 은 하나의 inode 번 호 를 사용 하 는데 그들 이 같은 파일 임 을 나타 내 고 소프트 링크 원본 파일 & 링크 파일 은 서로 다른 inode 번 호 를 가지 고 그들 이 서로 다른 파일 임 을 나타 낸다.파일 속성 에 있어 서 소프트 링크 는 링크 파일 이 라 고 명확 하 게 쓰 여 있 지만 하 드 링크 는 쓰 여 있 지 않 습 니 다. 본질 적 으로 하 드 링크 파일 과 원본 파일 은 완전히 평등 한 관계 이기 때 문 입 니 다.링크 수 는 다 릅 니 다. 소프트 링크 의 링크 수 는 증가 하지 않 습 니 다.파일 크기 가 다 릅 니 다. 하 드 링크 파일 의 크기 는 원본 파일 과 같 습 니 다. 이 는 같은 것 이 므 로 여기 소프트 링크 의 크기 는 원본 파일 과 다 릅 니 다. file 1 크기 는 48B 이 고 file1soft 는 5B 입 니 다. 이 안의 5 는 실제 적 으로 'file 1' 의 크기 입 니 다.
한 마디 로 하면 소프트 링크 를 만 드 는 것 은 새 파일 을 만 드 는 것 이다.링크 파일 에 접근 할 때 시스템 은 그 가 링크 파일 이라는 것 을 알 게 될 것 이다. 링크 파일 을 읽 고 진정 으로 접근 할 파일 을 찾 을 것 이다.
서로 다른 시스템 간 에 소프트 링크 를 구축 하고 디 렉 터 리 에 링크 를 구축 하면 예 를 들 지 않 고 독자 가 스스로 시도 할 수 있 으 며 저도 끊임없이 실천 하면 서 배 웠 습 니 다.
물론 소프트 링크 도 하 드 링크 가 없 는 단점 이 있 습 니 다. 링크 파일 은 원본 파일 의 경로 정 보 를 포함 하고 있 기 때문에 원본 파일 이 한 디 렉 터 리 에서 다른 디 렉 터 리 로 이동 하고 링크 파일 에 접근 하면 시스템 에서 찾 을 수 없습니다 ~ ~ 하 드 링크 는 이러한 결함 이 없습니다. 이동 하고 싶 은 대로 이동 하 십시오 (하하).그리고 새로운 색인 노드 를 만 들 고 원본 파일 을 저장 하 는 데 사용 할 추가 공간 을 시스템 에 할당 해 야 합 니 다.
추가: 링크 파일 을 symlink 로 볼 수 있 고 man symlink 로 배 울 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.