하드 링크와 심볼릭 링크의 차이점 이해
이제 하드 링크와 심볼릭 링크를 모두 생성했으므로 주요 차이점을 비교해 보겠습니다.
하드 링크:
- 원본 파일과 동일한 inode 를 공유합니다.
- 디렉토리에 링크할 수 없습니다.
- 파일 시스템 경계를 넘을 수 없습니다.
- 원본 파일이 삭제되거나 이동해도 계속 작동합니다.
- 내용 변경 사항이 모든 하드 링크에 반영됩니다.
심볼릭 링크:
- 대상 파일과 다른 자체 inode 를 갖습니다.
- 디렉토리에 링크할 수 있습니다.
- 파일 시스템 경계를 넘을 수 있습니다.
- 대상 파일이 삭제되거나 이동하면 깨집니다.
- 본질적으로 대상에 대한 경로를 포함하는 포인터 파일입니다.
몇 가지 예제를 통해 이러한 차이점을 보여드리겠습니다.
먼저, 허용되지 않는 디렉토리에 대한 하드 링크를 생성해 보겠습니다.
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_symlink가 testdir에 대한 심볼릭 링크임을 나타냅니다.
원본 디렉토리 내에 파일을 생성할 수 있습니다.
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
심볼릭 링크가 가리키는 파일이 다시 존재하므로 심볼릭 링크가 다시 작동합니다.