찾다
운영 및 유지보수리눅스 운영 및 유지 관리Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

이 기사는 Linux의 하드 링크와 소프트 링크는 물론 inode 관련 문제에 대한 관련 지식을 제공하는 것이 모든 사람에게 도움이 되기를 바랍니다.

Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

머리말

프론트엔드 패키지 관리자인 pnpm이 최근 큰 인기를 끌었고, pnpm의 원리를 분석한 기사도 많이 나왔습니다. 이해하고 보니 pnpm의 전체 아키텍처가 하드 링크와 소프트 링크를 기반으로 구성되어 있다는 것을 알 수 있었는데, 이 두 가지 개념에 대해 막연해서 공부해보고 싶습니다.

우리 모두 알고 있듯이 Unix/Linux 시스템의 모든 것은 파일입니다. Linux 시스템에서는 파일이 매우 중요하다는 것을 알 수 있습니다. 일반적으로 파일에 대한 더 직관적인 느낌은 확실히 파일 이름과 파일 내용입니다. 그러나 Linux 파일 시스템에는 파일 이름과 파일 내용 외에도 inode라는 매우 중요한 개념이 있습니다.

Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

inode

Wikipedia에서는 inode를 다음과 같이 설명합니다.

inode(인덱스 노드)는 파일이나 디렉터리와 같은 파일 시스템 개체를 설명하는 Unix 스타일 파일 시스템의 데이터 구조입니다. inode는 객체 데이터의 속성과 디스크 블록 위치를 저장합니다. 파일 시스템 객체 속성에는 소유자 및 권한 데이터뿐만 아니라 메타데이터(마지막 변경 시간, 액세스, 수정 시간)도 포함될 수 있습니다.

디렉토리는 다음을 포함하는 inode 목록입니다. 목록에는 자체 항목, 상위 항목 및 각 하위 항목이 포함됩니다.

의미: inode는 Unix 계열 파일 시스템에서 사용되는 파일 시스템 개체(예: 파일 또는 폴더) 유형입니다. 데이터 구조. 파일의 다양한 속성(마지막 inode 변경 시간, 마지막 액세스 시간, 마지막 수정 시간, 권한 정보 등의 메타 정보)을 저장합니다. 폴더는 자체 항목, 상위 노드 항목 및 모든 하위 노드를 포함하는 inode 그룹입니다.

사실 inode에는 위의 내용보다 더 많은 내용이 포함되어 있습니다.

  • 파일의 바이트 수

  • 파일의 사용자 ID

  • 파일의 그룹 ID

  • 읽기 및 쓰기 파일의 실행 권한

  • 타임 스탬프: ctime, inode가 마지막으로 변경된 시간; mtime, 파일 내용이 마지막으로 변경된 시간

  • 링크 수, 즉 가리키는 파일 이름 수 이 inode의 위치

  • 파일 데이터 블록

Linux에서 사용하는 ext2/ext3 파일 시스템에서는 다양한 유형의 데이터가 서로 다른 영역에 저장됩니다. . inode로 구성된 inode 테이블은 한 위치에 저장되고, 파일 데이터 블록은 다른 위치에 저장됩니다.

inode에는 파일 이름이 포함되어 있지 않으며 파일 이름은 폴더 정보 구조에 저장됩니다. 파일 이름은 inode의 별칭과 동일하므로 관리하고 기억하기 편리합니다. 리눅스 시스템은 아이노드(inode)를 통해 파일을 처리하는데, 파일을 수정할 때 시스템은 폴더의 정보구조에서 파일명에 해당하는 아이노드를 찾은 후, 아이노드에 저장된 파일 데이터 블록 주소를 통해 해당 아이노드를 찾는다. 읽기 및 쓰기 작업은 하드 디스크 위치에서 수행됩니다.

Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

하드 링크

일반적으로 inode는 파일 이름 및 파일 데이터와 일대일 관계를 갖지만 쉘 명령을 사용하여 여러 파일 이름이 동일한 inode를 가리키도록 할 수 있습니다. (하드 링크).

nodejs의 fs.link 메소드에 해당하는

ln test.txt test_hard.txt

와 같은 하드 링크를 생성하려면 ln 명령을 사용하세요.

하드 링크를 생성하기 전 test.txt는 다음과 같이 표현할 수 있습니다.

Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

하드 링크를 생성한 후:

Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

test_hard.txt의 inode가 소스 파일과 동일한 것을 확인할 수 있습니다. test.txt. 그런데 이제 링크 수가 2개가 되었습니다.

ls -li를 실행하여 확인할 수 있습니다.

Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

첫 번째 열은 inode 번호입니다. 둘 다 13029546이므로 두 파일이 동일한 inode를 사용하는 것을 볼 수 있습니다. 두 번째 열은 권한 정보, 네 번째 열은 소유자, 여섯 번째 열은 파일 콘텐츠 크기입니다. 보시다시피, 하드링크로 생성된 파일은 파일 이름이 다르다는 점을 제외하고는 소스 파일과 메타정보가 정확히 동일합니다. 세 번째 열은 링크 수를 나타냅니다. 보시다시피 현재 링크 수는 2입니다.

하드링크 파일과 소스 파일은 동일한 inode를 사용하고 동일한 파일 데이터 블록을 가리키므로 파일명을 제외한 모든 정보는 동일합니다. 따라서 이 두 파일은 동등하며 서로 하드링크 파일이라 할 수 있다. 파일을 수정하면 다른 파일의 내용도 동시에 변경되는 것을 볼 수 있습니다.

软链接

准确来说叫符号链接(symbolic link),一般又叫软链接(soft link)。与硬链接共用一个inode不同,软链接会创建新的inode,并指向源文件。可以理解软链接就是windows系统中的桌面快捷方式。

创建软链接的命令和硬链接很像,多了-s参数:ln -s

ln -s test.txt test_symbolic.txt

对应的nodejs的fs.symlink方法。

创建软链接之后:

Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

源文件inode的链接数还是1,创建了新的inode,软链接指向源文件。

执行ls -li看一下:

Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)

可以看到,软链接的inode number跟源文件的不一样,权限一列开头为小写L,表示软链,链接数为1,大小为8个字节。没错,软链文件也有大小,不过一般很小,毕竟只是一个快捷方式。

对比

文件重命名或文件移动

文件重命名和文件移动对于Linux系统来说都是文件绝对路径的更改。对硬链接来说,文件重命名或文件移动不会改变链接指向,而对软链接来说,文件重命名或文件移动则使链接断开,这时通过软链接修改文件内容时会重新创建一个新的inode,跟原文件名和文件数据块关联。

文件删除

rm命令或者nodejs的unlink其实是将inode的链接数减1。对于前文的硬链接,删除test_hard.txt使得inode1的链接数变成1,当链接数变成0时,系统就会释放掉这个inode,之后再创建的新文件就可以使用该inode的inode number了。这时没有inode指向文件数据block,所以文件找不到了。但实际上文件数据还存在硬盘中,所以经常能看到网上有一些帮助恢复误删的文件的工具。软链接inode链接数为1,删除软链接则系统释放该inode。

链接文件和文件夹

软链接可以链接文件和文件夹,但硬链接只能链接文件。

不同文件系统创建链接

软链接可以跨不同的文件系统创建,但是硬链接不行,因为硬链接是共用一个inode,而不同的文件系统有不同的inode table。

应用场景

硬链接

  • 文件备份:为了防止重要的文件被误删,文件备份是一种好的办法,但拷贝文件会带来磁盘空间的消耗。硬链接能不占用磁盘空间实现文件备份。

  • 文件共享:多人共同维护同一份文件时,可以通过硬链接的方式,在私人目录里创建硬链接,每个人的修改都能同步到源文件,但又避免某个人误删就丢掉了文件的问题。

  • 文件分类:不同的文件资源需要分类,比如某个电影即是的分类是外国、悬疑,那我们可以在外国的文件夹和悬疑的文件夹里分别创建硬链接,这样可以避免重复拷贝电影浪费磁盘空间。有人可能说,使用软链接不也可以吗?是的,但不太好。因为一旦源文件移动位置或者重命名,软链接就失效了。

软链接

  • 快捷方式:对于路径很深的文件,查找起来不太方便。利用软链接在桌面创建快捷方式,可以迅速打开并编辑文件。

  • 灵活切换程序版本:对于机器上同时存在多个版本的程序,可以通过更改软链接的指向,从而迅速切换程序版本。这里提到了python版本的切换可以这么做。

  • 动态库版本管理:不是很懂,具体可以看这里。

总结

Linux系统通过inode管理文件,inode存储着文件字节数、文件权限、链接数、数据block位置等信息。

硬链接与源文件共用inode,除了文件名不同,其他与源文件一样。不能对文件夹创建硬链接,不能对不同的文件系统的文件创建硬链接。

软链接类似于windows的快捷方式,有独立的inode。可以对文件夹或不同文件系统的文件创建软链接。

硬链接和软链接修改文件内容都会同步到源文件,因为本质上它们都是指向源文件的数据block。

相关推荐:《Linux视频教程

위 내용은 Linux 하드링크와 소프트링크를 이해하도록 도와줍니다. (자세한 설명은 그림과 텍스트로 설명되어 있습니다.)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 掘金에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
데비안에서 tigervnc의 로그를 볼 수있는 곳데비안에서 tigervnc의 로그를 볼 수있는 곳Apr 13, 2025 am 07:24 AM

Debian Systems에서 TigervNC 서버의 로그 파일은 일반적으로 사용자의 홈 디렉토리의 .VNC 폴더에 저장됩니다. TigervNC를 특정 사용자로 실행하는 경우 로그 파일 이름은 일반적으로 XF : 1.Log와 유사합니다. 여기서 XF : 1은 사용자 이름을 나타냅니다. 이 로그를 보려면 다음 명령을 사용할 수 있습니다. cat ~/.vnc/xf : 1. log 또는 텍스트 편집기를 사용하여 로그 파일을 열 수 있습니다. nano ~/.vnc/xf : 1. 로그 파일에 액세스하고 보는 것은 시스템의 보안 설정에 따라 루트 허가가 필요할 수 있습니다.

NGINX SSL 인증서 업데이트 Debian TutorialNGINX SSL 인증서 업데이트 Debian TutorialApr 13, 2025 am 07:21 AM

이 기사에서는 Debian 시스템에서 NginxSSL 인증서를 업데이트하는 방법에 대해 안내합니다. 1 단계 : CertBot을 먼저 설치하십시오. 시스템에 CERTBOT 및 PYTHON3-CERTBOT-NGINX 패키지가 설치되어 있는지 확인하십시오. 설치되지 않은 경우 다음 명령을 실행하십시오. sudoapt-getupdatesudoapt-getinstallcertbotpython3-certbot-nginx 2 단계 : 인증서 획득 및 구성 rectbot 명령을 사용하여 nginx를 획득하고 nginx를 구성하십시오.

Tigervnc를 통해 원격으로 관리하는 방법Tigervnc를 통해 원격으로 관리하는 방법Apr 13, 2025 am 07:18 AM

이 기사는 Debian 시스템에서 TigervNC를 구성하여 원격 데스크탑 관리를 구현하는 방법을 안내합니다. 1. TIGERVNC 서버 시스템 업데이트 설치 : 먼저 데비안 시스템 패키지 업데이트 : sudoaptupdatesudoAptUpgrade TIGERVNC 설치 : TIGERVNC 서버 설치 : sudoaptinstalltigervnc-standalone-server VNC 데스크톱 환경 생성 : Sudomkdir-p ~/.vncsudonano ~/.

TigervNC와 데비안 호환성에 큰 문제가 있습니까?TigervNC와 데비안 호환성에 큰 문제가 있습니까?Apr 13, 2025 am 07:15 AM

TigervNC는 데비안 시스템에 대한 호환성이 매우 높습니다. 이 기사에서는 데비안 시스템의 원격 데스크탑 액세스에 TigervNC를 설치, 구성 및 사용하는 방법에 대한 자세한 지침을 제공합니다. 설치 및 구성 : Debian Systems (예 : Debian10)에 TigervNC 설치가 매우 편리합니다. 서버 및 클라이언트를 설치하려면 다음 명령을 실행하기 만하면 설치가 완료된 후 SudoaptupdatesudoAptIgervnc-STANDALONE-SERVERTIGERVNC-COMMON을 설치 한 후 구성 파일을 통해 데스크톱 환경, 암호 및 기타 설정을 조정할 수 있습니다. 종속성 : Tig

데비안에서 다중 사용자 로그인을 구현하는 방법데비안에서 다중 사용자 로그인을 구현하는 방법Apr 13, 2025 am 07:12 AM

이 기사는 여러 사용자의 동시 액세스를 달성하기 위해 데비안 시스템에서 TigervNC를 구성하는 방법을 소개합니다. 1. TIGERVNC 서버를 먼저 설치하고 다음 명령을 사용하여 TIGERVNC 서버 및 관련 구성 요소를 설치하십시오. SudoaptUpdatesudoAptIgervnc-standalone-servertigervnc-common 2. Tigervnc 서버를 구성하여 tigervnc 서버 파일 /etgervnc/systemd/scistem/tigervncserver@. Sudonano/etc/s

데비안 시스템에서 Tigervnc에서 권한을 설정하는 방법데비안 시스템에서 Tigervnc에서 권한을 설정하는 방법Apr 13, 2025 am 07:09 AM

이 기사는 데비안 시스템에서 TigervNC 권한을 안전하게 구성하는 방법에 대해 안내합니다. 1. TigervNC 설치 먼저, TigervNC가 설치되어 있는지 확인하십시오 : Sudoaptupdatesudoaptinstallone-servertigervnc-common 2. 보안을 향상시키기 위해 전용 VNC 사용자를 만듭니다. vnc 액세스를위한 전용 사용자 만 생성하는 것이 좋습니다. VNC 서버를 구성하여 VNC 서버 구성 파일 (일반적으로 ~/에 있습니다.

데비안에서 TigervNC 원격 데스크탑을 사용하는 방법데비안에서 TigervNC 원격 데스크탑을 사용하는 방법Apr 13, 2025 am 07:06 AM

이 기사에서는 편리한 원격 액세스를 달성하기 위해 Debian 시스템에서 TigervNC 원격 데스크탑을 구성하는 방법을 안내합니다. 1 단계 : TIGERVNC 서버를 먼저 설치하려면 필요한 소프트웨어 패키지를 설치하려면 다음 명령을 사용해야합니다. SudoaptUpdatesudoAptIgervnc-STANDALONE-SERVERTIGERVNC-COMMON 2 : TIGERVNC 서버 비밀번호를 구성하여 설치 후 다음 명령을 실행하여 VNC 서버 비밀번호를 설정하기 위해 다음 명령을 실행하십시오. 읽기 전용 비밀번호. 3 단계 : Tiger를 시작하십시오

Debian의 Tigervnc에 방화벽을 설치하는 방법Debian의 Tigervnc에 방화벽을 설치하는 방법Apr 13, 2025 am 07:03 AM

이 기사에서는 데비안 시스템에서 TigervNC 서버의 방화벽을 구성하는 방법에 대해 설명합니다. 사용자 친화적 인 방화벽 관리 도구 인 UFW (UncloplatedFireWall)를 사용하여 구성됩니다. 1 단계 : UFW 설치 먼저 UFW를 설치해야합니다. UFW를 설치해야합니다. Sudoapt-Getupdatesudoapt-GetInstallufw 2 단계 : UFW 활성화 설치가 완료된 후 UFW : Sudouf-Wenable 단계 3 : TigervNC 포트가 TigervNC를 사용하여 포트 5900을 사용하여 기본적으로 사용하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경