Linux 시스템의 하드 링크 및 소프트 링크 생성을 설명하는 예

PHPz
풀어 주다: 2024-02-12 12:48:27
앞으로
551명이 탐색했습니다.

Linux 링크는 두 가지 유형으로 나뉘는데, 하나는 하드 링크라고 하고 다른 하나는 심볼릭 링크라고 합니다. 기본적으로 ln 명령은 하드 링크를 생성합니다. 하드 링크와 소프트 링크의 차이점은 근본적으로 inode 노드에서 시작됩니다. 다음은 Linux에서 두 가지 링크 유형 간의 차이점을 확인하기 위해 Linux 시스템에서 하드 링크와 소프트 링크를 생성하는 예입니다.

Linux 시스템의 하드 링크 및 소프트 링크 생성을 설명하는 예

우선, Linux 시스템에서는 커널이 새로 생성된 각 파일에 Inode(인덱스 노드)를 할당하고 각 파일에는 고유한 inode 번호가 있다는 점을 이해해야 합니다. 파일 속성은 인덱스 노드에 저장되며, 파일에 접근할 때 인덱스 노드가 메모리에 복사되므로 파일에 대한 빠른 접근이 가능해진다.

링크는 공유 파일과 이에 액세스하는 사용자의 여러 디렉터리 항목 간에 연결을 설정하는 방법입니다. Linux에는 하드 링크와 소프트 링크라는 두 가지 유형의 링크가 포함되어 있습니다.

하드 링크

직접 말하면 하드 링크는 파일 인덱스 노드를 가리키는 포인터이며 시스템은 이에 대한 inode를 재할당하지 않습니다. :ln 명령을 사용하여 하드 링크를 만들 수 있습니다. 문법:

으아악

사용법: 첫 번째: "existingfile"에 대한 하드 링크를 만들고 파일 이름은 "newfile"입니다. 둘째: "directory" 디렉터리에서 "existingfile-list"에 포함된 모든 파일에 대해 동일한 이름을 가진 하드 링크를 만듭니다. 일반적으로 사용되는 선택적 [옵션] -f는 "새 파일" 존재 여부에 관계없이 링크를 생성합니다. -n "newfile"이 이미 존재하는 경우 링크가 생성되지 않습니다. 예는 다음과 같습니다.

으아악

참고:
링크를 생성하기 전 file1에 표시된 링크 수는 1
입니다. 링크를 생성한 후 (1) file1과 file1hard의 링크 수는 2가 됩니다. (2) file1과 file1hard의 inode 번호는 동일합니다. (3) file1과 file1hard에 표시되는 파일 크기도 동일합니다.
ln 명령의 작업 결과는 다음과 같습니다. file1과 file1hard는 동일한 파일의 두 이름입니다. 이들은 동일한 인덱스 노드 번호와 파일 속성을 가지고 있습니다. 파일 file1에 대한 하드 링크를 생성한다는 것은 의 파일 인덱스 노드를 의미합니다. file1은 현재 디렉터리에 있습니다. 새 포인터를 만듭니다.

Linux 시스템의 하드 링크 및 소프트 링크 생성을 설명하는 예

링크 수가 동시에 1개 줄어듭니다. 파일 내용을 가리키는 모든 포인터, 즉 링크 수가 0으로 줄어들면 커널이 디스크에서 파일 내용을 삭제합니다. 현재 디렉터리 논리 구조: (죄송합니다. 그림은 표시되지 않습니다.)

다른 디렉터리에 있지만 동일한 파일 시스템에 있는 파일에 대한 하드 링크를 만들 수도 있습니다. file1과 file2가 /home/longcheng/dir1 디렉터리에 있다고 가정합니다. 다음 명령은 /home/longcheng에 file2에 대한 하드 링크를 생성합니다.

으아악

다음 프로그램은 dir2 디렉토리의 dir1 디렉토리에 있는 모든 파일에 대한 하드 링크를 생성하는 것입니다

으아악

ln -f 기존 파일 새 파일을 사용하는 경우 새 파일이 이미 존재하는 경우 새 파일이 무엇이든 현재 사용자에게만 쓰기 권한이 있으며 새 파일은 종료 파일의 하드 링크 파일이 됩니다.

하드 링크는 공간을 절약하고 Linux 시스템에서 파일 시스템을 통합하는 전통적인 방법이지만 몇 가지 단점이 있습니다.
(1) 서로 다른 파일 시스템에 있는 파일 간에는 링크를 설정할 수 없습니다
(2) 슈퍼유저만이 디렉토리에 대한 하드 링크를 생성할 수 있습니다. 많은 트리에서는 루트 사용자도 생성할 수 있다고 말하지만 저자는 학습 과정에서 루트 사용자도 생성할 수 없다는 사실을 발견했습니다. 제 시스템은 Redhat이고 커널 2.4와 2.6을 사용해 보았는데 다른 시스템에서도 가능한지는 모르겠습니다. .

소프트 링크(심볼릭 링크)

소프트 링크는 하드 링크의 단점을 극복하고 파일 시스템 제한이 없습니다. 모든 사용자는 디렉토리를 가리키는 심볼릭 링크를 만들 수 있습니다. 결과적으로 이제는 더 널리 사용되고 유연성이 향상되었으며 다양한 시스템과 네트워크에 걸쳐 파일을 연결할 수도 있습니다.

소프트 링크를 만들려면 ln 뒤에 -s 옵션을 추가하면 됩니다. 예는 다음과 같습니다.

으아악 Linux 시스템의 하드 링크 및 소프트 링크 생성을 설명하는 예

위 링크 결과를 보면 소프트링크와 하드링크의 차이는 개념뿐만 아니라 구현에도 있다는 것을 알 수 있습니다.

차이:
하드링크 원본 파일과 링크 파일은 공통 inode 번호를 공유하므로 동일한 파일임을 나타내고, 소프트 링크 원본 파일과 링크 파일은 inode 번호가 달라 두 파일이 서로 다르다는 것을 나타냅니다.
파일속성에서 소프트링크는 링크파일임을 명시하고 있지만, 하드링크는 그렇지 않습니다. 왜냐하면 본질적으로 하드링크 파일과 원본파일은 완전히 동등한 관계이기 때문입니다.
링크 수는 다르며 소프트 링크 수는 증가하지 않습니다. 파일 크기는 다르며 하드 링크 파일에 표시되는 크기는 원본 파일과 동일합니다.

간단히 말하면 소프트링크를 생성하는 것은 새로운 파일을 생성하는 것과 같습니다. 링크된 파일에 접근하면 시스템은 그것이 링크된 파일임을 알아내고, 링크된 파일을 읽어 실제로 접근하려는 파일을 찾는다. 물론 소프트링크 역시 하드링크에 없는 단점이 있는데, 링크 파일에는 원본 파일의 경로 정보가 포함되어 있기 때문에 원본 파일을 한 디렉터리에서 다른 디렉터리로 이동한 후 해당 링크 파일에 다시 접근하면, 시스템은 이를 찾을 수 없지만 하드 링크는 찾을 수 없습니다. 이 결함이 없으면 원하는 대로 이동할 수 있습니다. 또한 시스템은 새 인덱스 노드를 생성하고 원본 파일의 경로를 저장하기 위해 추가 공간을 할당해야 합니다.

위 내용은 Linux 시스템의 하드 링크 및 소프트 링크 생성을 설명하는 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:lxlinux.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!