Computer >> 컴퓨터 >  >> 체계 >> Linux

Linux에서 소프트 링크와 하드 링크의 차이점 이해

Linux에서 소프트 링크와 하드 링크의 차이점 이해

작업 중인 Linux 시스템에서 여러 디렉토리 계층에 중첩된 파일이 있다고 가정해 보겠습니다. 해당 파일에 쉽게 액세스하려면 바탕 화면에 해당 파일에 대한 바로 가기를 만들어야 합니다. 심볼릭 링크(소프트 링크라고도 함)를 사용할 수 있습니다. 하드 링크로 알려진 다른 형태의 링크도 있습니다. 이 기사에서는 소프트 링크와 하드 링크의 차이점을 설명하고 어떤 링크를 사용해야 하는지 살펴보겠습니다.

소프트 링크 vs. 하드 링크

소프트 링크 또는 심볼릭 링크는 심볼릭 링크일 뿐입니다. 단순히 대상 파일 경로에 대한 포인터입니다. 소프트 링크는 파일 경로에 파일이나 폴더가 실제로 존재하는지 여부를 신경 쓰지 않습니다. 파일이나 폴더가 없으면 심볼릭 링크가 끊어집니다. 심볼릭 링크를 수정하거나 삭제할 수 있으며 대상 파일에는 영향을 미치지 않습니다.

반면에 하드 링크는 대상 파일에 추가 이름을 부여하는 효과가 있습니다. 한 파일의 내용을 편집하면 다른 파일의 내용도 수정됩니다. 간단히 말해서 소프트 링크는 대상 파일 경로에 대한 참조일 뿐이고 하드 링크는 대상 파일의 데이터에 대한 직접 링크입니다.

아래에서 소프트 링크와 하드 링크가 작동하는 방식을 설명합니다.

작동 중인 소프트 링크

4줄의 텍스트가 포함된 "first_file.txt"라는 파일이 있다고 가정해 보겠습니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해

홈 디렉토리에 소프트 링크를 만들 것입니다.

ln -s first_file.txt ~/sl-firstfile.txt

그놈 데스크탑 환경에서 파일을 마우스 오른쪽 버튼으로 클릭하고 "링크 만들기"를 선택하여 파일에 대한 소프트 링크를 만들 수 있습니다. 이름이 "Link to .txt."

와 유사한 위치에 소프트 링크가 생성됩니다. Linux에서 소프트 링크와 하드 링크의 차이점 이해

"sl-firstfile.txt"의 내용을 보려고 하면 "first_file.txt"와 동일한 것을 알 수 있습니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해

파일 관리자에서 이 두 파일을 보면 소프트 링크가 원본 파일에 대한 바로 가기로 나타납니다. 파일 아이콘의 검은색 화살표가 이를 나타냅니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해

ls -l 명령을 사용하여 현재 디렉토리의 목록을 보려고 할 때 , 소프트 링크가 대상 파일을 가리키는 위치를 볼 수 있습니다. "sl-firstfile.txt"에 대한 권한 문자열의 첫 번째 문자는 "l"이며, 이는 이 항목이 링크용임을 의미합니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해

소프트 링크의 삭제 동작

대상 파일을 삭제해도 소프트 링크는 계속 남아 있습니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해

그러나 "dangling" 또는 "broken" 링크가 되어 쓸모가 없습니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해

이제 "first_file.txt"라는 같은 이름의 다른 파일을 생성하면 소프트 링크가 다시 활성화됩니다.

참고 :소프트 링크가 있고 링크가 생성된 파일의 절대 경로를 찾으려면 readlink를 사용하세요. 아래와 같이 명령합니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해

이 명령의 출력은 원본 파일의 절대 경로가 됩니다.

하드 링크 실행

이제 홈 디렉토리에 동일한 파일에 대한 하드 링크를 생성합니다. 다음 명령으로 수행할 수 있습니다.

ln first_file.txt hl-first-file.txt

참고 :소프트 링크와 하드 링크를 만드는 방법은 모두 ln을 사용합니다. 명령. 유일한 차이점은 -s입니다. 심볼릭 링크를 나타내는 플래그입니다.

하드 링크를 만드는 또 다른 방법은 link를 사용하는 것입니다. 명령.

link hl-firstfile.txt hl2-firstfile.txt

두 파일을 모두 확인하면 내용이 동일함을 알 수 있습니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해 Linux에서 소프트 링크와 하드 링크의 차이점 이해

GUI에서 두 파일은 별개의 엔터티로 나타납니다. 하드 링크의 존재에 대한 표시가 없습니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해

하드 링크 파일 "hl-firstfile.txt"에 새 줄을 추가해 보겠습니다.

echo "hello" >> hl-first-file.txt

데이터 변경 사항은 두 파일 모두에서 볼 수 있습니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해 Linux에서 소프트 링크와 하드 링크의 차이점 이해

하드 링크가 생성되면 두 개의 서로 다른 파일이 존재하지만 해당 데이터가 링크된 것과 같습니다. 하나의 변경 사항은 다른 하나에 반영됩니다.

빠른 도움말 :소프트 링크와 하드 링크를 생성할 때 링크가 생성되는 파일과 동일한 확장자를 사용하는 것이 좋습니다.

하드 링크 삭제 동작

하드 링크의 경우 원본 파일이나 하드 링크의 삭제는 문제가 되지 않습니다. 처음에 파일에 저장된 데이터는 하드 링크를 통해 계속 액세스할 수 있습니다.

Linux에서 소프트 링크와 하드 링크의 차이점 이해 Linux에서 소프트 링크와 하드 링크의 차이점 이해

소프트 링크는 언제 유용합니까?

우리는 소프트 링크가 파일의 바로 가기로 나타나는 것을 확인했습니다. 여러 디렉토리 레이어에 파일이 있고 쉽게 액세스할 수 있는 위치에 파일을 저장하려는 경우 해당 파일에 대한 짧은 링크를 만드는 것이 좋습니다.

하드 링크는 언제 유용합니까?

파일에 대한 하드 링크가 생성되면 파일이나 하드 링크에 대한 변경 사항이 둘 다에 반영됩니다.

백업 서버가 있다고 가정해 보겠습니다. 마지막 백업 이후 파일/폴더의 변경 사항만 반영되는 증분 백업 메커니즘이 사용됩니다. 서버의 파일과 컴퓨터의 해당 복사본 간에 하드 링크를 만들 수 있습니다. 백업이 발생하면 파일 이름이 변경되더라도 컴퓨터에 있는 파일의 변경 사항이 서버에 있는 해당 하드 링크 파일에 자동으로 반영됩니다.

결론

소프트 링크와 하드 링크는 모두 고유한 용도가 있으며 다른 상황에서 사용해야 합니다. 차이점을 이해하면 링크를 생성할 때 더 나은 결정을 내릴 수 있습니다. 디렉토리에 대해서도 소프트 링크와 하드 링크를 생성할 수 있습니다. 소프트 링크는 파일 시스템 간에 생성할 수 있지만 하드 링크는 동일한 파일 시스템 내에서만 생성할 수 있습니다.