Hard Link์ Symbolic Link๋ ๋ชจ๋ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์์ ์ฐธ์กฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
์ฐ์ , Hard Link๋ File System ๋ด์์ ๋์ผํ inode ๋ฒํธ๋ฅผ ๊ฐ์ง๋ ์ฌ๋ฌ ์ด๋ฆ์ ๋ถ์ฌํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ ์๋ณธ ํ์ผ๊ณผ ๋์ผํ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ณต์ ํ๋ค. ์์น ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ด๋ฆ์ ์ฌ๋ฌ ๊ฐ ์์ฑํ๋ ๊ฐ๋ ์ด๋ค. ์๋ณธ ํ์ผ์ด ์ญ์ ๋๋๋ผ๋ Hard Link๋ก ์ฐ๊ฒฐ๋ ํ์ผ์ ๊ทธ๋๋ก ์ ์ง๋๋ฉฐ, ๋ฐ์ดํฐ ๋ํ ์ ์ง๋๋ค. ํ๋ ๋งํฌ๋ ์๋ณธ ํ์ผ๊ณผ ๊ตฌ๋ณ๋์ง ์์ผ๋ฉฐ ๋์ผํ ํ์ผ๋ก ์ทจ๊ธ๋๋ค. ๋ฐ๋ผ์ ๋ ํ์ผ ์ค ํ๋๋ฅผ ์์ ํ๋ฉด ๋ค๋ฅธ ํ์ผ์๋ ๋์ผํ๊ฒ ๋ฐ์๋๋ค. ๋ํ Hard Link๋ ๋์ผํ File System ๋ด์์๋ง ์์ฑ ๊ฐ๋ฅํ๋ค. Directory์ ๋ํ Hard Link๋ ์์ฑ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, ์ค์ง File์ ๋ํ Link๋ง ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
Symbolic Link๋ ์๋ณธ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์ ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ ์ ์ธ ํฌ์ธํฐ์ด๋ค. ์ด๋ ์๋ณธ ํ์ผ๊ณผ ์์ดํ inode ๋ฒํธ๋ฅผ ๊ฐ์ง๋ฉฐ, ์๋ณธ ํ์ผ์ ์์น๋ฅผ ์ฐธ์กฐํ๋ค. ๋ฐ๋ผ์ ์๋ณธ ํ์ผ์ด ์ญ์ ๋๋ฉด Symbolic Link๋ ๊นจ์ง๋ฉฐ, ๋ ์ด์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค(broken link). Symbolic Link๋ ํ์ผ ์์คํ ์ ๊ฒฝ๊ณ๋ฅผ ๋์ด ๋ค๋ฅธ ํ์ผ ์์คํ ์ ์์นํ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์๋ ์์ฑํ ์ ์๋ค. ๋ํ File ๋ฟ ์๋๋ผ Directory๋ Linkํ ์ ์๋ค.
์๋๋ ๋๊ฐ ์ค ๋ด์ฉ์ ๊ต์ฌ๋ ์ํ ๋๋น์ฉ์ผ๋ก ๋ณด๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํ ๋ฒ์ ์ด์ผ.
๊ตฌ์กฐ๋ ๐ ๊ฐ๋
๋น๊ต → ๐น Hard Link → ๐น Symbolic Link → โ๏ธ ๋น๊ตํ → ๐ก์ถ๊ฐ ์ค๋ช
์์ผ๋ก ์งฐ์ด.
(์ด๋ชจ์ง, ํ, ํต์ฌ์ด ๊ฐ์กฐ๋ก ๊ฐ๋
์ฑ ๊ทน๋ํํจ)
๐ Hard Link vs Symbolic Link
UNIX/Linux์์ ๋งํฌ(Link) ๋
ํ๋์ ํ์ผ์ ์ฌ๋ฌ ์ด๋ฆ์ผ๋ก ์ ๊ทผํ๊ฑฐ๋,
๋ค๋ฅธ ๊ฒฝ๋ก์ ์ฐธ์กฐ๋ฅผ ์์ฑํ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฅ์ด๋ค.
๋งํฌ์๋ ๋ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค:
- Hard Link (ํ๋ ๋งํฌ)
- Symbolic Link (์ฌ๋ณผ๋ฆญ ๋งํฌ, ํน์ Soft Link)
๐น 1๏ธโฃ Hard Link (ํ๋ ๋งํฌ)
๐ ๊ฐ๋
- ๊ฐ์ ํ์ผ ์์คํ ๋ด์์ ๋์ผํ inode ๋ฒํธ๋ฅผ ๊ณต์ ํ๋ ๋ ๋ค๋ฅธ ์ด๋ฆ์ด๋ค.
- ์ฆ, ํ๋์ ์ค์ ๋ฐ์ดํฐ ๋ธ๋ก(ํ์ผ ๋ด์ฉ) ์ ์ฌ๋ฌ ์ด๋ฆ์ด ๊ณต์ ํ๋ ๊ตฌ์กฐ๋ค.
๐ง ํต์ฌ ํน์ง
- ์๋ณธ ํ์ผ๊ณผ inode ๋ฒํธ๊ฐ ๊ฐ๋ค.
- ๋์ผํ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ฐธ์กฐ → ๋ด์ฉ์ด ์์ ํ ๋์ผํ๊ฒ ์ ์ง๋จ.
- ์๋ณธ ํ์ผ์ ์ญ์ ํด๋ ๋ฐ์ดํฐ๋ ์ ์ง๋๋ค.
(๋ค๋ฅธ ํ๋ ๋งํฌ๊ฐ ์กด์ฌํ๋ ํ, ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง์ง ์์) - ๋๋ ํฐ๋ฆฌ์ ๋ํ ํ๋ ๋งํฌ ์์ฑ์ ๋ถ๊ฐ๋ฅ.
- ๊ฐ์ ํ์ผ ์์คํ ๋ด์์๋ง ์์ฑ ๊ฐ๋ฅ.
๐ ๋ช ๋ น์ด ์์
ln original.txt hardlink.txt
→ original.txt์ hardlink.txt๋ ์์ ํ ๋์ผํ ํ์ผ๋ก ์ทจ๊ธ๋๋ค.
๐ ๋์ ์
$ echo "Hello" > a.txt
$ ln a.txt b.txt
$ ls -li
131072 -rw-r--r-- 2 user user 6 Oct 21 12:30 a.txt
131072 -rw-r--r-- 2 user user 6 Oct 21 12:30 b.txt
inode ๋ฒํธ๊ฐ ๋์ผ(131072) → ๊ฐ์ ์ค์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ณต์
๐น 2๏ธโฃ Symbolic Link (์ฌ๋ณผ๋ฆญ ๋งํฌ / ์ํํธ ๋งํฌ)
๐ ๊ฐ๋
- ์๋ณธ ํ์ผ์ ๊ฒฝ๋ก(path) ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ๋์ ํ์ผ์ด๋ค.
- ์ผ์ข ์ “์ง๋ฆ๊ธธ(Shortcut)” ๋๋ ํฌ์ธํฐ ์ญํ ์ ํ๋ค.
๐ง ํต์ฌ ํน์ง
- ์๋ณธ ํ์ผ๊ณผ inode ๋ฒํธ๊ฐ ๋ค๋ฅด๋ค.
- ์ค์ ๋ฐ์ดํฐ ๋ธ๋ก์ด ์๋๋ผ, “๊ฒฝ๋ก ๋ฌธ์์ด” ์ ์ ์ฅํ๋ค.
- ์๋ณธ ํ์ผ์ด ์ญ์ ๋๋ฉด ๋งํฌ๊ฐ ๋๊ธด๋ค → Broken Link (๊นจ์ง ๋งํฌ)
- ํ์ผ๋ฟ ์๋๋ผ ๋๋ ํฐ๋ฆฌ๋ ๋งํฌ ๊ฐ๋ฅ.
- ๋ค๋ฅธ ํ์ผ ์์คํ ๊ฐ์๋ ์์ฑํ ์ ์๋ค.
๐ ๋ช ๋ น์ด ์์
ln -s /home/user/original.txt link.txt
→ link.txt๋ /home/user/original.txt๋ฅผ ์ฐธ์กฐํ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ๋๋ค.
๐ ๋์ ์
$ ls -li
131072 -rw-r--r-- 1 user user 6 Oct 21 12:30 original.txt
131080 lrwxrwxrwx 1 user user 17 Oct 21 12:31 link.txt -> /home/user/original.txt
inode ๋ฒํธ๊ฐ ๋ค๋ฅด๊ณ (131072 vs 131080), ->๋ก ์๋ณธ ๊ฒฝ๋ก๋ฅผ ํ์ํจ
โ๏ธ Hard Link vs Symbolic Link ๋น๊ตํ
| inode ๋ฒํธ | ๋์ผ (์๋ณธ๊ณผ ๊ฐ์) | ์๋ก ๋ค๋ฆ |
| ๋ฐ์ดํฐ ๊ณต์ | O (๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก) | X (๊ฒฝ๋ก๋ง ์ ์ฅ) |
| ์๋ณธ ์ญ์ ์ | ๋ฐ์ดํฐ ์ ์ง๋จ | ๋งํฌ ๊นจ์ง (broken link) |
| ๋์ | ํ์ผ๋ง ๊ฐ๋ฅ | ํ์ผ + ๋๋ ํฐ๋ฆฌ ๊ฐ๋ฅ |
| ํ์ผ ์์คํ ๊ฒฝ๊ณ | ๋์ ์ ์์ | ๊ฐ๋ฅ |
| ์ญํ | ๋์ผํ ํ์ผ์ ๋ ๋ค๋ฅธ ์ด๋ฆ | ์๋ณธ์ ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ |
| ์์ฑ ๋ช ๋ น์ด | ln file link | ln -s file link |
| ๋์คํฌ ๊ณต๊ฐ | ๋์ผํ ๋ธ๋ก์ ๊ณต์ → ํจ์จ์ | ๋ณ๋ ๋งํฌ ํ์ผ ํ์ |
| ์ฌ์ฉ ์ | ๋ฐฑ์ , ๋ฐ์ดํฐ ๊ณต์ | ๋ฐ๋ก๊ฐ๊ธฐ, ๊ฒฝ๋ก ๋จ์ถ |
๐ก ์ถ๊ฐ ์ค๋ช
- inode ๊ธฐ๋ฐ ์ฐจ์ด
Hard Link๋ ๋์ผํ inode๋ฅผ, Symbolic Link๋ ๋ณ๋์ inode๋ฅผ ๊ฐ์ง๋ค. - ls -l์์ ํ์ธํ๊ธฐ
- Hard Link: ๊ถํ ์์ ์ผ๋ฐ ํ์ผ(-rw-r--r--) ํํ๋ก ํ์๋จ
- Symbolic Link: ์์ l์ด ๋ถ์ (lrwxrwxrwx)
→ -> ๋ค์ ์๋ณธ ๊ฒฝ๋ก ํ์
- Broken Link ์์
$ rm original.txt
$ cat link.txt
cat: link.txt: No such file or directory
- ์๋ณธ์ด ์ฌ๋ผ์ ธ์ ๊ฒฝ๋ก ์ฐธ์กฐ๊ฐ ๋ฌดํจํ๋ ์ํ
'6. CS ๊ธฐ์ด ๐ > Linux & Unix ๐ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Linux/Unix][6-2] $ ./2 test.txt test.bak (0) | 2025.10.21 |
|---|---|
| [Linux/Unix][6-1] txt write err ์ฒ๋ฆฌ (0) | 2025.10.21 |
| [Linux/Unix][5-1] stat ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ // st_mode (0) | 2025.10.21 |
| [Linux/Unix][4-3] Inode ์ ๋ณด ์ถ๋ ฅ (0) | 2025.10.21 |
| [Linux/Unix][4-2] inode์ ์ ๋ณด (0) | 2025.10.21 |