๐ Hard link์ Soft link(symlink)๋ ๋ฌด์์ผ๊น?
Unix file์ data part์ filename part๋ก ๋๋๋ค. data part๋ inode์ ์ฐ๊ฒฐ๋๋ค. inode(index node)๋ Unix ํ์ผ ์์คํ
์ ์ค๋ช
ํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ธ๋ฐ, ๊ฐ๊ฐ์ inode๋ ๊ฐ์ฒด ๋ฐ์ดํฐ์ ์์ฑ๊ณผ ๋์คํฌ ๋ธ๋ก ์์น๋ฅผ ์ ์ฅํ๊ณ , ํ์ผ ์์คํ
๊ฐ์ฒด ์์ฑ์๋ metadata(times of last change, access, modification)์ permission data ๋ฑ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ค. filename part๋ ํ์ผ ์ด๋ฆ๊ณผ ํ์ผ ์ด๋ฆ๊ณผ ๊ด๋ จ๋ inode number๊ฐ ์๋ค. ๋ ๊ฐ ์ด์์ ํ์ผ ์ด๋ฆ์ด ๋์ผํ inode number๋ฅผ ์ฐธ๊ณ ํ๋ฉด hard linked ๋์๋ค๊ณ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก file์ hard drive๋ฅผ ๊ฐ๋ฆฌํจ๋ค. (ํธ์์ hard drive๋ inode๋ผ๊ณ ์นญํ๋ค.) ์๋ฅผ ๋ค์ด, file1์ ์์ฑํ๋๋ฐ, file2๋ฅผ hard link ํ์ผ๋ก ์์ฑํ๋ค๋ฉด file2๋ file1์ด ๊ฐ๋ฆฌํค๊ณ ์๋ ์ ํํ ์ง์ (hard drive)์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค. ์ด๋, file1์ ํธ์งํ๋ฉด ์๋์ผ๋ก file2๋ ํธ์ง์ด ๋๋๋ฐ, ๊ทธ ์ด์ ๋ ๊ทธ๋ค์ด ๊ฐ์ spot(hard drive)์ ๊ฐ๋ฆฌํค๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ง์ฝ, ์๋ณธ ํ์ผ๊ณผ ํ๋๋งํฌ๋ก ์์ฑํ ํ์ผ ์ค original file์ ์ง์ฐ๋ฉด ์ด๋ป๊ฒ ๋ ๊น? file2๋ file1๊ณผ ๊ด๊ณ์์ด ์ฌ์ ํ ์ ์์ ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ ์ํ์ธ๋ฐ, ๊ทธ ์ด์ ๋ ์ฌ์ ํ hard drive(inode)๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
// example of Hard link
! filename ! inode # !
+--------------------+
\
>--------------> ! permbits, etc ! addresses !
/ +---------inode-------------+
! othername ! inode # !
+---------------------+
๋ฐ๋ฉด, Soft link ํน์ Symbolic link(Aka symlink)๋ hard drive์ ์ ์ฅ๋ ์์น๋ฅผ ๋์ผํ๊ฒ ๊ฐ๋ฆฌํค๋ Hard link์ ๋ค๋ฅด๊ฒ origin file์ descriptor ํน์ name์ ๊ฐ๋ฆฌํจ๋ค. (Windows์ ๋ฐ๋ก๊ฐ๊ธฐ ์์ด์ฝ์ ๋ ์ฌ๋ฆฌ๋ฉด ์ฝ๋ค.) Soft link๋ก ๋ง๋ ํ์ผ์ ์๋ณธํ์ผ๋ณด๋ค ์ฉ๋์ด ์๋ค. ๋ง์ฝ, ์๋ณธ ํ์ผ์ ์ฉ๋์ด 5 ํ
๋ผ๋ฐ์ดํธ๋ผ๊ณ ํ๋๋ผ๋ Symbolic link๋ก ์๋ก์ด ํ์ผ์ ์์ฑํ๋ฉด ์๋ณธ ํ์ผ์ ์ฉ๋๋ณด๋ค ๋งค์ฐ ์์ ํ์ผ์ ๋ง๋ค ์ ์๋ค. ์ด๋ ๊ฒ Soft link๋ ๊ฐ์ ํ์ผ์ด๋ผ๋ ์ฉ๋์ ์๊ฒ ๋ง๋ค ์ ์๋ ์ฅ์ ์ด ์์ง๋ง, ๋จ์ ๋ ์๋ค. ๋ฐ๋ก ์๋ณธํ์ผ์ ์ ๊ฑฐํ๋ฉด Symbolic link๋ก ๋ง๋ ํ์ผ์ ์ฌ์ฉํ ์ ์๋ ์ํ๊ฐ ๋๋๋ฐ, ๊ทธ ์ด์ ๋ hard drive๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ ์๋๋ผ origin file์ ๊ฐ๋ฆฌํค๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
// example of Soft link
! filename ! inode # !
+--------------------+
\
.-------> ! permbits, etc ! addresses !
+---------inode-------------+
/
/
/
.----------------------------------------------'
(
'--> !"/path/to/some/other/file"!
+---------data-------------+
/ }
.~ ~ ~ ~ ~ ~ ~ }-- (redirected at open() time)
( }
'~~> ! filename ! inode # !
+--------------------+
\
'------------> ! permbits, etc ! addresses !
+---------inode-------------+
/
/
.----------------------------------------------------'
(
'-> ! data ! ! data ! etc.
+------+ +------+
๊ฐ๋จํ๊ฒ Hard link
์์๋ฅผ ์ดํด๋ณด์. ๋จผ์ , basic.file
์ ์์ฑํ๊ณ ํ๋๋งํฌ๋ก ๋ง๋ ์ ํ์ผ hardlink.file
์ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ls -lia
์ปค๋งจ๋๋ฅผ ํตํด inode ๋ฒํธ๋ฅผ ํฌํจํ ํ์ผ ๋ชฉ๋ก ํ์ค์ฉ ๋ํ๋ด๊ฒ ํ๋ค. ๊ทธ๋ฌ๋ฉด ์ฒซ ๋ฒ์งธ column์ 48298642
๋ฅผ ๋ณผ ์ ์๋๋ฐ, ์ด๋ฅผ ํตํด basic.file
๊ณผ hardlink.file
์ด ๋์ผํ inode์ data๋ฅผ ๊ณต์ ํ๋ค๋ ์ ์ ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ chmod
์ปค๋งจ๋๋ก basic.file
์ ๊ถํ์ ๋ณ๊ฒฝํ ๊ฒฐ๊ณผ ํ๋๋งํฌ ๋ hardlink.file
์ ๊ถํ๋ ๋์ผํ๊ฒ ๋ณ๊ฒฝ๋ ๊ฒ์ ์ ์ ์๋ค.
์ด์ด์ Soft link
๋ฅผ ์ดํด๋ณด์. ln -s
์ปค๋งจ๋๋ฅผ ์ด์ฉํด ์ํํธ ๋งํฌ๋ก softlink.file
์ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ผํ๊ฒ ls -lia
์ปค๋งจ๋๋ก inode๋ฅผ ํ์ธํ ๊ฒฐ๊ณผ basic.file
๊ณผ inode๊ฐ ๋ค๋ฅธ ์ ์ ํ์ธ ํ ์ ์์๋ค.(basic.file
: 4829642
, softlink.file
: 48298825
) ๋์ผํ ๋ฐ์ดํฐ์ ์ ๊ทผ์ ๊ฐ๋ฅํ์ง๋ง, inode๊ฐ ๋ค๋ฅด๊ณ , ํ์ผ ๊ถํ ๋ํ ๋ค๋ฅด๋ค. ์ด์ basic.file
์ ์ ๊ฑฐํ๊ณ softlink.file
์ ์ ๊ทผ์ ์๋ํ๋ฉด ์ ๊ทผํ์ง ๋ชปํ๋ค๋ ๋ฉ์์ง๊ฐ ๋ฌ๋ค.(cat: softlink.file: No such file or directory) ์ฆ, ์ํํธ ๋งํฌ๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ์ Access๊ฐ ๋ถ๊ฐ๋ฅํ๋ค๋ ๋ป์ด๋ค. ๊ทธ๋ฌ๋ hardlink.file
์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํจ์ ์ ์ ์์๋ค.
๐ก ls -lia command์ value๊ฐ ๊ถ๊ธํ๋ฉด ๋ค์์ ์ดํด๋ณด์.
Reference
'Et-cetera > terms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
UTM parameter๋ ๋ฌด์์ผ๊น? (0) | 2022.12.04 |
---|
๋๊ธ