๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Et-cetera/terms

Hard link์™€ Soft link(symlink)๋Š” ๋ฌด์—‡์ผ๊นŒ?

by YWTechIT 2023. 2. 26.
728x90

๐Ÿ“ 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)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
 

hard-link-structure
// 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์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
 

soft-link-structure
// 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์˜ ๊ถŒํ•œ๋„ ๋™์ผํ•˜๊ฒŒ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

728x90
hard-link-example

 

์ด์–ด์„œ 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์—๋Š” ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•จ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

soft-link-example

๐Ÿ’ก ls -lia command์˜ value๊ฐ€ ๊ถ๊ธˆํ•˜๋ฉด ๋‹ค์Œ์„ ์‚ดํŽด๋ณด์ž.

ls-lia-command-description

Reference

  1. Hard link - WIKI
  2. Soft link - WIKI
  3. Hard vs Soft Links in Linux - Youtube
  4. MicroNuggets: Hard Links versus Soft Links Explained - Youtube
  5. linuxgazette - The difference between hard and soft links
  6. rockylinux - commands
๋ฐ˜์‘ํ˜•

'Et-cetera > terms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

UTM parameter๋Š” ๋ฌด์—‡์ผ๊นŒ?  (0) 2022.12.04

๋Œ“๊ธ€