1993.1.18 SUBJECT: Symbolic/Hard linkÀÇ ºñ±³ CONTENTS: 0. Introduction 1. Hard link 1) "link"ÀÇ °³³ä: 2) hard link¶õ ? 3) hard linkÀÇ Æ¯¼º 2. Symbolic link DESCRIPTION: 0. UNIXÀÇ file typeÀ» ¾ê±âÇÒ ¶§, ordinary, directory, special, socket, FIFOs¿Í ÇÔ²² symbolic link, hard linkµµ ¾ð±ÞµÈ´Ù. symbolic/hard link¸¦ file typeÀ¸·Î ÀÌÇØÇÏ·Á¸é ¿ì¼± °³³ä°ú Ư¡À» ÀÌÇØÇØ¾ß ÇÒ °Í °°´Ù. 1. Hard link 1) "link"ÀÇ °³³ä: - "link"¶ó´Â °³³äÀ» ÀÌÇØÇÏ´Â ÇÑ ¹æ¹ýÀº filesystemÀÇ directory°¡ ¾î¶»°Ô °èÃþÀûÀ¸·Î ±¸Á¶¸¦ Çü¼ºÇÏ°í ÀÖÀ¸¸ç ¾î¶»°Ô "cd" command·Î ¿©·¯ directory¸¦ À̵¿ÇÒ ¼ö Àִ°¡¸¦ ÀÌÇØÇÏ´Â °ÍÀÌ´Ù. - °¢ directory´Â ±âº»ÀûÀ¸·Î ÃÖ¼ÒÇÑ µÎ °³ÀÇ fileÀ» °¡Áø´Ù. ¨ç directory ÀÚ½ÅÀ» Ç¥ÇöÇÏ´Â dot(.) ¨è ÀÚ½ÅÀÇ parent directory¸¦ Ç¥ÇöÇÏ´Â dot-dot(..) - ÀÌ µÎ fileÀÌ directoryµéÀ» ¿¬°áÇÏ¿© filesystemÀÇ °èÃþÀû ±¸Á¶¸¦ Çü¼ºÇÑ´Ù. °¢ directoryÀÇ parent¿Í sub-directory¸¦ dot(.)¿Í dot-dot(..) file·Î ¿¬°á ÇÏ´Â °ÍÀÌ´Ù. Áï ¨ç 'current directoryÀÇ dot-dot(..) file'ÀÇ inode = 'parent directoryÀÇ dot(.) file'ÀÇ inode ¨è 'current directoryÀÇ dot(.) file'ÀÇ inode = 'sub directoryÀÇ dot-dot(..) file'ÀÇ inode - sub directory°¡ ¿©·¯ °³ÀÎ directoryÀÇ °æ¿ì sub directoryµéÀÇ dot-dot(..) fileÀÇ inode´Â À̵é parent directoryÀÇ dot(.) fileÀÇ inode¿Í °°À» °ÍÀÌ´Ù. ´Þ¸® Ç¥ÇöÇϸé, sub directoryµéÀÇ °¢ 'drectory entry'´Â current directoryÀÇ dot-dot(..) file Áï parenet directoryÀÇ inode¸¦ °¡¸®Å°´Â °ÍÀÌ´Ù. - ÀÌó·³ 'ÇϳªÀÇ inode'¿¡ '¿©·¯ °³ÀÇ (direcory) file'ÀÌ '¿¬°á(link)'µÇ¾î ÀÖÀ» ¼ö ÀÖ°í, ÀÌ ¶§ '¿¬°á(link)µÈ °¹¼ö'¸¦ 'link °¹¼ö'¶ó ÇÑ´Ù. "ls -l"À» »ç¿ëÇϸé directoryµéÀÌ ÃÖ¼ÒÇÑ 2°³ ÀÌ»óÀÇ 'link °¹¼ö'¸¦ °¡Áö°í ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖ´Ù. 2) hard link¶õ ? - À§¿¡¼­ directory¸¦ µé¾î ¼³¸íÇÑ linkÀÇ °³³ä¼­ ¿©·¯°³ÀÇ (directory) fileµéÀÌ ÇÑ °³ÀÇ inode number¸¦ »ç¿ëÇØ ¼­·Î ¿¬°áµÉ ¼ö ÀÖÀ½À» º¸¾Ò´Ù. - hard link¶õ ÀÌ·¯ÇÑ link¿Í °°Àº °³³äÀÌ´Ù. ÇÑ fileÀÇ inode¿¡ ¿©·¯ fileµéÀÇ inode¸¦ ÀÏÄ¡½ÃÅ´À¸·Î½á ¼­·Î¸¦ ¿¬°á(link)½ÃÅ°´Â ¹æ½ÄÀÎ °ÍÀÌ´Ù. - hard link´Â 'directory file'ÀÇ link ±¸Á¶¸¦ 'ordinary file'·Î È®Àå½ÃŲ °ÍÀÌ´Ù. Áï "ln"À̶ó´Â command¸¦ »ç¿ëÇÏ¿© ½ÇÁ¦ (hard) linkµÈ fileµéÀ» »ý¼ºÇÔÀ¸·Î½á 'link¶ó´Â ³»ºÎÀû Ç¥Çö'À» 'hard link file (type)'À¸·Î ¹Ù²Ù¾î ÁÖ´Â °ÍÀÌ´Ù. - hard link¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº symbolic linkó·³ filename¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Ï°í, 'link °¹¼ö'°¡ 2 ÀÌ»óÀΰ¡¸¦ È®ÀÎÇÏ°í inode number°¡ °°Àº fileÀ» ã¾Æ¾ß ÇÏ´Â °ÍÀÌ´Ù. 3) hard linkÀÇ Æ¯¼º - hard link´Â fileÀÌ Á¸ÀçÇÒ ¶§¸¸ ¸¸µé¾î Áú ¼ö ÀÖ´Ù. Áï inode°¡ ¹Ì¸® Á¸ÀçÇÏ°í ÀÖ¾î¾ß 'µ¿ÀÏ inode'¸¦ °®´Â fileÀ» ¸¸µé ¼ö Àִ°Í. - filesystemÀ» crossÇÏ¿© hard link¸¦ Çü¼ºÇÒ ¼ö´Â ¾ø´Ù. A filesystem¿¡¼­ B filesystem¿¡ ÀÖ´Â file(inode number¸¦ 2577À̶ó ÇÑ´Ù¸é)·Î hard link¸¦ ½ÃµµÇÑ´Ù ÇÔÀº B filesystemÀÇ file inode number 2577°ú °°Àº inode number¸¦ A filesystemÀÇ hard linkµÈ fileÀÌ °¡Áø´Ù´Â °Í. ±×·¯³ª ½ÇÁ¦ A filesystemÀÇ inode number 2577Àº B filesystemÀÇ 2577°ú´Â ¹«°üÇÑ °ÍÀÌ´Ù. - super user¸¸ÀÌ directory¸¦ °¡¸®Å°´Â »õ·Î¿î (hard) link¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â filesystemÀÌ loopingÀ» µ¹°Ô²û linkµÉ ¼ö ÀÖ´Â °¡´É¼ºÀÌ Àֱ⠶§¹®ÀÌ´Ù. - hard linkµÈ fileÁß Çϳª¸¦ Áö¿ü´Ù°í ÇÏ¿© ½ÇÁ¦ ±× fileÀ» Áö¿ü´Ù°í ÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù. hard linkµÇ¾î ÀÖ´Â ´Ù¸¥ fileÀÌ µ¿ÀÏ inode¸¦ »ç¿ëÇϱ⠶§¹®ÀÌ´Ù. fileÀ» Áö¿ü´Ù ÇÔÀº ±× fileÀÌ »ç¿ëÇÏ°í ÀÖ´Â indoe°¡ releaseµÊÀ» ÀǹÌÇÑ´Ù. 2. Symbolic link * ÇÑ fileÀ» ´Ü¼øÈ÷ '´Ù¸¥ À̸§(pathname)'À¸·Î Áö½ÃÇÏ´Â file typeÀÌ´Ù. * symbolic link´Â fileÀ» °¡¸®Å°´Â 'indirect pointer'ÀÌ´Ù. hard link´Â fileÀÇ inode·ÎÀÇ 'direct pointer'ÀÌ´Ù. hard link°¡ µ¿ÀÏ inode¿¡ ´ëÇÑ ´Ù¼ö fileÀÇ °øÀ¯¶ó¸é symbolic link´Â file°ú linknameÀÌ °¢±â ´Ù¸¥ inode¸¦ °¡Áø´Ù. * hard linkÀÇ Á¦¾à »çÇ×: ¨ç ÀÌ¹Ì Á¸ÀçÇÏ´Â file¸¸À» hard linkÇÒ ¼ö ÀÖ´Ù. ¨è µ¿ÀÏÇÑ filesystem¿¡ ÀÖ´Â file¸¸ hard link°¡ °¡´ÉÇÏ´Ù. ¨é superuser¸¸ÀÌ directory·Î hard linkÇÒ ¼ö ÀÖ´Ù. ( "-f" optionÀ» »ç¿ëÇØ¾ß ÇÔ) * ¹Ý¸é symbolic link´Â ÀÌ»óÀÇ hard link Á¦¾à »çÇ׿¡ ¹«°üÅä·Ï ±¸ÇöµÈ °Í. ¨ç ÇöÀç Á¸ÀçÇÏÁö ¾Ê´Â fileÀÌ¶óµµ (symbolic) link°¡ °¡´ÉÇÏ´Ù ¨è filesystemÀ» crossÇÏ¿© symbolic link°¡ °¡´ÉÇÏ´Ù. ¨é ÀÏ¹Ý userµµ directory·ÎÀÇ symbolic link°¡ °¡´ÉÇÏ´Ù. * symbolic link´Â ÇÑ file/Àüü directory hierarchy¸¦ systemÀÇ ´Ù¸¥ °÷À¸·Î ¿Å±æ ¶§ ¸¹ÀÌ »ç¿ëµÈ´Ù. * symbolic link´Â 4.2 BSD¿¡¼­ µµÀԵǾú°í À̾î SVR4¿¡¼­ äÅõǾú´Ù. SVR4ÀÇ symbolic link´Â 'ÀüÅëÀûÀÎ System V filesystem'°ú 'Unified File System(UFS)' ¾çÀÚ¸¦ ¸ðµÎ Áö¿øÇÑ´Ù. * 'symbolic link¸¦ °¡Áö´Â file(source ºÎºÐ)'ÀÇ data block¿¡´Â 'symbolic link°¡ °¡¸®Å°´Â file(destination ºÎºÐ)'ÀÇ À̸§À» °¡Áö°í ÀÖ´Ù. ¿¹¸¦ µé¾î, lrwxrwxrwx 1 root 7 Aug 11:00 lib -> usr/lib 'directory entry'ÀÇ filename¿¡´Â 3 character string "lib"ÀÌ µé¾î ÀÖ°í file¿¡´Â 7 byteÀÇ data "usr/lib"°¡ ÀÖ´Ù. inodeÀÇ 'file type'¿¡ symbolic link¶ó´Â ½Äº°ÀÌ µÇ¾î ÀÖÀ¸¹Ç·Î kernelÀº 7 byteÀÇ data "usr/lib"°¡ file "lib"¿¡¼­ symbolic linkµÇ¾î ÀÖÀ½À» ¾Ë°Ô µÈ´Ù. Revision History Created on Jan. 18 ,1993