Linux 링크 생성

LinuxBeginner
지금 연습하기

소개

Linux 시스템에서 링크는 파일과 디렉토리를 참조하는 강력한 방법을 제공합니다. 이러한 링크는 파일 이름과 디스크에 저장된 실제 데이터 간의 연결을 생성합니다. 링크를 효과적으로 사용하는 방법을 이해하는 것은 Linux 사용자 및 시스템 관리자에게 필수적인 기술입니다.

이 랩에서는 Linux 에서 두 가지 유형의 링크를 생성하고 사용하는 방법을 안내합니다.

  1. 하드 링크 (Hard Links): 이는 동일한 inode (디스크의 데이터) 를 가리키는 추가 디렉토리 항목입니다. 하드 링크를 생성하면 기본적으로 동일한 데이터에 다른 이름을 부여하는 것입니다.

  2. 심볼릭 링크 (Symbolic Links) (소프트 링크라고도 함): 이는 이름으로 다른 파일을 가리키는 특수 파일입니다. 하드 링크와 달리 심볼릭 링크는 디렉토리를 가리킬 수 있으며 서로 다른 파일 시스템 간에 걸쳐 있을 수 있습니다.

이 랩을 마치면 ln 명령을 사용하여 두 가지 유형의 링크를 모두 생성하는 방법과 Linux 환경에서의 실용적인 응용 프로그램을 이해하게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 94%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

작업 디렉토리 생성

이 단계에서는 링크 생성 연습에 사용할 디렉토리 구조와 파일을 생성합니다.

먼저, 현재 위치를 확인하여 올바른 디렉토리에 있는지 확인합니다. 다음 명령을 실행합니다.

pwd

/home/labex/project가 출력으로 표시되어야 합니다. 다른 디렉토리에 있는 경우, project 디렉토리로 이동합니다.

cd /home/labex/project

이제 파일을 저장할 linklab이라는 새 디렉토리를 생성합니다.

mkdir /home/labex/project/linklab

이 디렉토리로 이동합니다.

cd /home/labex/project/linklab

이제 링크 생성 연습에 사용할 두 개의 텍스트 파일을 생성합니다.

echo "This is the original file for our link examples." > original.txt

파일이 올바르게 생성되었는지 확인해 보겠습니다.

ls -l

다음과 유사한 출력이 표시되어야 합니다.

-rw-r--r-- 1 labex labex 46 [date and time] original.txt

파일의 내용도 확인해 보겠습니다.

cat original.txt

터미널에 앞서 입력한 텍스트가 표시되어야 합니다.

This is the original file for our link examples.

하드 링크 생성

하드 링크는 원본 파일과 동일한 디스크의 정확한 데이터를 가리키는 또 다른 이름입니다. 원본 파일과 하드 링크는 동일한 inode 번호를 공유하며, 이는 본질적으로 다른 이름을 가진 동일한 파일임을 의미합니다.

하드 링크를 생성하려면 ln 명령을 사용합니다. original.txt 파일에 대한 하드 링크를 생성해 보겠습니다.

ln /home/labex/project/linklab/original.txt /home/labex/project/linklab/hardlink.txt

이 명령은 original.txt에 대한 하드 링크인 hardlink.txt라는 새 파일을 생성합니다. 이제 하드 링크가 올바르게 생성되었는지 확인해 보겠습니다.

ls -li

-i 옵션은 각 파일의 inode 번호를 표시합니다. original.txthardlink.txt가 동일한 inode 번호를 갖는 것을 확인할 수 있으며, 이는 동일한 파일임을 나타냅니다.

출력은 다음과 유사해야 합니다.

[inode number] -rw-r--r-- 2 labex labex 46 [date and time] hardlink.txt
[inode number] -rw-r--r-- 2 labex labex 46 [date and time] original.txt

파일 권한 뒤의 숫자 2는 inode 를 가리키는 하드 링크의 수를 나타냅니다. original.txthardlink.txt 모두 링크 수가 2 로 표시되는데, 이는 동일한 데이터를 가리키는 파일이 이제 두 개이기 때문입니다.

하나의 파일을 수정하면 다른 파일에 영향을 미친다는 것을 보여드리겠습니다. 왜냐하면 그들은 본질적으로 동일한 파일이기 때문입니다.

echo "This is an added line." >> original.txt
cat hardlink.txt

출력에 두 줄 모두 표시되어야 합니다.

This is the original file for our link examples.
This is an added line.

이는 original.txt에 대한 변경 사항이 hardlink.txt에 반영됨을 확인합니다.

마찬가지로, hardlink.txt를 수정하면 변경 사항이 original.txt에 반영됩니다.

echo "Another line added through the hard link." >> hardlink.txt
cat original.txt

이제 출력에 세 줄 모두 표시되어야 합니다.

This is the original file for our link examples.
This is an added line.
Another line added through the hard link.

심볼릭 링크 생성

심볼릭 링크 (소프트 링크 또는 심링크라고도 함) 는 하드 링크와 다릅니다. 심볼릭 링크는 단순히 이름으로 다른 파일을 가리키는 별도의 파일입니다. 대상 파일과 동일한 inode 를 공유하지 않습니다.

심볼릭 링크를 생성하려면 -s 옵션과 함께 ln 명령을 사용합니다. original.txt 파일에 대한 심볼릭 링크를 생성해 보겠습니다.

ln -s /home/labex/project/linklab/original.txt /home/labex/project/linklab/symlink.txt

이 명령은 original.txt에 대한 심볼릭 링크인 symlink.txt라는 새 파일을 생성합니다. 이제 심볼릭 링크가 올바르게 생성되었는지 확인해 보겠습니다.

ls -li

출력은 다음과 유사해야 합니다.

[inode number] -rw-r--r-- 2 labex labex  [size] [date and time] hardlink.txt
[inode number] -rw-r--r-- 2 labex labex  [size] [date and time] original.txt
[inode number] lrwxrwxrwx 1 labex labex  [size] [date and time] symlink.txt -> /home/labex/project/linklab/original.txt

symlink.txt에 대한 권한의 시작 부분에 있는 l을 확인하여 심볼릭 링크임을 나타냅니다. 또한 출력은 심볼릭 링크가 가리키는 경로를 보여줍니다. original.txtsymlink.txt가 서로 다른 inode 번호를 가지고 있음을 확인할 수 있으며, 이는 별도의 파일임을 확인합니다.

심볼릭 링크의 내용을 확인해 보겠습니다.

cat symlink.txt

original.txt와 동일한 내용을 볼 수 있습니다.

This is the original file for our link examples.
This is an added line.
Another line added through the hard link.

심볼릭 링크를 통해 다른 줄을 추가해 보겠습니다.

echo "This line was added through the symbolic link." >> symlink.txt
cat original.txt

이제 출력에 네 줄 모두 포함되어야 합니다.

This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
This line was added through the symbolic link.

이는 심볼릭 링크를 통해 변경된 사항이 대상 파일에 영향을 미치는 것을 확인합니다.

이제 대상 파일을 삭제할 때 어떤 일이 발생하는지 살펴보겠습니다.

mv original.txt original.txt.bak
cat symlink.txt

다음과 같은 오류 메시지가 표시되어야 합니다.

cat: symlink.txt: No such file or directory

이는 심볼릭 링크가 여전히 더 이상 존재하지 않는 /home/labex/project/linklab/original.txt를 가리키기 때문입니다. 이것이 하드 링크와 심볼릭 링크의 주요 차이점입니다.

원본 파일을 복원해 보겠습니다.

mv original.txt.bak original.txt
cat symlink.txt

대상 파일이 다시 존재하므로 심볼릭 링크가 다시 작동합니다.

하드 링크와 심볼릭 링크의 차이점 이해

이제 하드 링크와 심볼릭 링크를 모두 생성했으므로 주요 차이점을 비교해 보겠습니다.

하드 링크:

  1. 원본 파일과 동일한 inode 를 공유합니다.
  2. 디렉토리에 링크할 수 없습니다.
  3. 파일 시스템 경계를 넘을 수 없습니다.
  4. 원본 파일이 삭제되거나 이동해도 계속 작동합니다.
  5. 내용 변경 사항이 모든 하드 링크에 반영됩니다.

심볼릭 링크:

  1. 대상 파일과 다른 자체 inode 를 갖습니다.
  2. 디렉토리에 링크할 수 있습니다.
  3. 파일 시스템 경계를 넘을 수 있습니다.
  4. 대상 파일이 삭제되거나 이동하면 깨집니다.
  5. 본질적으로 대상에 대한 경로를 포함하는 포인터 파일입니다.

몇 가지 예제를 통해 이러한 차이점을 보여드리겠습니다.

먼저, 허용되지 않는 디렉토리에 대한 하드 링크를 생성해 보겠습니다.

mkdir testdir
ln testdir testdir_hardlink

다음과 같은 오류 메시지가 표시되어야 합니다.

ln: testdir: hard link not allowed for directory

이제 허용되는 디렉토리에 대한 심볼릭 링크를 생성해 보겠습니다.

ln -s testdir testdir_symlink

디렉토리 심볼릭 링크를 확인해 보겠습니다.

ls -la

출력에 testdir_symlink -> testdir가 표시되어 testdir_symlinktestdir에 대한 심볼릭 링크임을 나타냅니다.

원본 디렉토리 내에 파일을 생성할 수 있습니다.

echo "This is a test file in the directory." > testdir/testfile.txt

그리고 심볼릭 링크를 통해 액세스합니다.

cat testdir_symlink/testfile.txt

내용을 볼 수 있습니다.

This is a test file in the directory.

이는 심볼릭 링크가 디렉토리를 가리키고 해당 내용에 액세스하는 데 사용될 수 있음을 보여줍니다.

또 다른 중요한 차이점은 원본 파일을 삭제하면 하드 링크가 아닌 심볼릭 링크가 깨진다는 것입니다. 우리는 이미 심볼릭 링크 예제에서 이것을 보았습니다. 하드 링크로 이를 시연해 보겠습니다.

rm original.txt
cat hardlink.txt

여전히 네 줄 모두 표시되어야 합니다.

This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
This line was added through the symbolic link.

하드 링크는 데이터가 디스크에 여전히 존재하고 하드 링크가 여전히 해당 데이터를 가리키기 때문에 계속 작동합니다.

그러나 심볼릭 링크는 이제 깨졌습니다.

ls -l symlink.txt
cat symlink.txt

symlink.txt가 여전히 존재하지만 더 이상 존재하지 않는 파일을 가리키고 이를 읽으려고 하면 오류가 발생합니다.

하드 링크에서 원본 파일을 다시 생성해 보겠습니다.

cp hardlink.txt original.txt
cat symlink.txt

심볼릭 링크가 가리키는 파일이 다시 존재하므로 심볼릭 링크가 다시 작동합니다.

요약

이 랩에서는 Linux 의 두 가지 유형의 링크, 즉 하드 링크와 심볼릭 링크 (소프트 링크) 에 대해 배웠습니다. ln 명령을 사용하여 이러한 링크를 생성하는 연습을 했고 주요 차이점을 살펴보았습니다.

이 랩에서 다룬 주요 사항:

  1. 하드 링크:

    • 옵션 없이 ln 명령을 사용하여 생성
    • 원본 파일과 동일한 inode 를 공유
    • 디렉토리에 링크하거나 파일 시스템 경계를 넘을 수 없음
    • 원본 파일이 삭제되어도 계속 작동
    • 내용 변경 사항이 모든 하드 링크에 반영됨
  2. 심볼릭 링크:

    • ln -s 명령을 사용하여 생성
    • 대상 파일과 다른 자체 inode 를 가짐
    • 디렉토리에 링크하고 파일 시스템 경계를 넘을 수 있음
    • 대상 파일이 삭제되거나 이동하면 깨짐
    • 대상에 대한 경로를 포함하는 포인터 파일임
  3. 실용적인 응용:

    • 링크는 파일 및 디렉토리에 대한 바로 가기를 만드는 데 유용합니다.
    • 파일의 여러 버전을 유지하는 데 사용할 수 있습니다.
    • 시스템 관리자는 구성 관리에 링크를 사용합니다.
    • 링크는 데이터를 복제하지 않고 파일을 구성하는 데 도움이 됩니다.

링크를 효과적으로 생성하고 사용하는 방법을 이해하는 것은 Linux 사용자에게 필수적인 기술입니다. 이러한 도구를 사용하면 Linux 파일 시스템 내에서 효율적인 파일 관리 및 구성을 수행할 수 있습니다.