********************************************************************* È£½ºÆ®°£ÀÇ µ¥ÀÌÅÍ µ¿±âÈ­¸¦ À§ÇÑ rsync ¼³Á¤ ********************************************************************* Á¦¸ñ : È£½ºÆ®°£ÀÇ µ¥ÀÌÅÍ µ¿±âÈ­¸¦ ÀÌÇÑ rsync ¼³Á¤ ÀÛ¼ºÀÚ : ¹®ÅÂÁØ(taejun@taejun.pe.kr http://www.taejun.pe.kr) ÀÛ¼ºÀÏ : 2000. 4. 12 ********************************************************************* Âü°íÀÚ·á : http://www.taejun.pe.kr/board2/read.php3?table=linuxinfo&no=28&page=1 rsync ÀÌ¿ë µ¿±âÈ­Çϱâ (¹Ú¸í¼ø´Ô pms89@hitel.net ±Û) ·¹µåÇÞ ¸®´ª½º 6 ¼­¹ö - ÆÄ¿öºÏ ÃâÆÇ»ç, ¹ø¿ªÆÇÁß rdist °ü·Ã ÀÚ·á man page - rsync(1), rsyncd.conf(5) 0. µé¾î°¡¸ç ¼­¹ö Ŭ·¯½ºÅ͸µÀ¸·Î ¿©·¯´ëÀÇ ¼­¹ö¸¦ ¿î¿µÇÏ´Â °æ¿ì °¢ È£½ºÆ®°£ÀÇ ÀÚ·á ¸¦ °øÀ¯ÇؾßÇÕ´Ï´Ù. °øÀ¯±â¹ý¿¡´Â NFSµµ ÀÖÁö¸¸ NFSÀÇ °æ¿ì´Â ³×Æ®¿÷ Æ®·¡ ÇÈÀ» ¹«Ã´À̳ª ³ôÀ̹ǷΠ±× ´ë½Å rdist³ª rsync¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±Û¿¡¼­´Â rsync¸¦ ÀÌ¿ëÇÏ¿© °¢ È£½ºÆ®°£ÀÇ ÀڷḦ µ¿±âÈ­ÇÏ´Â ¹æ¹ýÀ» ¼³¸í ÇÕ´Ï´Ù. 1. rsync¶õ ¹«¾ùÀΰ¡? rsync´Â rcp¿Í ºñ½ÁÇÑ µ¿ÀÛÀ» ÇÏ´Â ÇÁ·Î±×·¥À¸·Î rcpº¸´Ù ´õ ´Ù¾çÇÑ ¿É¼Ç ÀÌ ÀÖ°í, ´õ È¿À²ÀûÀ¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÕ´Ï´Ù. (Ãâ¹ßÁö¿Í ¸ñÀûÁö »çÀÌ¿¡ ´Ù¸¥ ºÎºÐ¸¸À» Àü¼Û) ÆÄÀÏÅ©±âÀÇ º¯È­³ª ½Ã°£ÀÇ º¯È­µîÀ» ÀÌ¿ë µ¿±âÈ­¸¦ ÇÕ´Ï´Ù. ÁÖ¿ä Ư¡Àº ´ÙÀ½°ú °°½À´Ï´Ù. ¤· ¸µÅ©, device, ¼ÒÀ¯ÀÚ, ±×¸¨, Çã°¡±Ç º¹»ç Áö¿ø ¤· GNU tar¿Í ºñ½ÁÇÑ exclude, exclude-from ¿É¼Ç Áö¿ø ¤· rsh ¶Ç´Â ssh µî »ç¿ë°¡´É ¤· root ±ÇÇÑÀÌ ÇÊ¿ä¾øÀ½ ¤· anonymous ¶Ç´Â ÀÎÁõ rsync ¼­¹ö Áö¿ø(¹Ì·¯¸µ¿¡ À¯¿ëÇÔ) 2. rsync ¼³Á¤ ¤· ÀϹÝÀûÀÎ ¹èÆ÷ÆÇÀÇ °æ¿ì ÇÁ·Î±×·¥ÀÌ µé¾îÀÖÀ½. ´ÙÀ½°ú °°ÀÌ È®ÀÎÈÄ ¾ø À¸¸é ÇÁ·Î±×·¥ ¼³Ä¡ # rpm -qa | grep rsync rsync-2.3.1-2 ¤· rsync 2.3.1 ÀÌÀü ¹öÀüÀÇ °æ¿ì "º¸¾È¹ö±×"°¡ ÀÖÀ¸¹Ç·Î ÀÌÀü ¹öÀüÀÌ ¼³ Ä¡µÇ¾îÀÖ´Ù¸é ¹Ýµå½Ã "2.3.1 ÀÌ»ó ¹öÀüÀ¸·Î ¾÷µ¥ÀÌÆ®"ÇؾßÇÔ ¤· µ¿±âÈ­¿¡ »ç¿ëÇÏ´Â ÇÁ·ÎÅäÄÝ : rsh, ssh¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ½. À̸¦ »ç¿ë ÇÏÁö ¾Ê´õ¶óµµ ¿ø°Ý rsync ¼­¹ö¿¡ TCP Æ÷Æ® 873À» ÀÌ¿ë Á¢¼ÓÇÒ ¼ö ÀÖÀ½. 8 73 Æ÷Æ®¸¦ ÀÌ¿ëÇÒ °æ¿ì inetd.conf ¿¡ Ãß°¡·Î ¼³Á¤À» ÇؾßÇÕ´Ï´Ù. rsync stream tcp nowait root /usr/bin/rsync rsyncd --daem on --daemonÀº ´ë¸ó¸ðµå·Î ½ÃÀÛÇÑ´Ù´Â À̾߱âÀ̸ç /etc/rsyncd.confÆÄÀÏÀ» ÇÊ ¿ä·Î ÇÕ´Ï´Ù. ¶ÇÇÑ /etc/services ¿¡ ´ÙÀ½ ³»¿ëÀÌ ÀÖ´ÂÁö È®ÀÎÇÏ°í ¾øÀ¸¸é Ãß°¡ÇÕ´Ï´Ù. rsync 873/tcp # rsync Ãß°¡ÇÏ°í ³ª¼­´Â inetd ´ë¸óÀ» ´Ù½Ã ¶ç¿ö¾ß°ÚÁö¿ä? # kill -HUP inetd_pid ¸¸¾à ssh³ª rsh¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â inetd.conf¸¦ ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï ´Ù. 3. ¼³Á¤ÆÄÀÏ : /etc/rsyncd.conf ¿¹Á¦¸¦ º¸°Ú½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ È£½ºÆ®¸¦ www1À̶ó°í ÇÏ°Ú½À´Ï´Ù. # cat /etc/rsyncd.conf [web] path = /home/www/htdocs comment = web uid = nobody gid = nobody use chroot = yes read only = yes hosts allow = www2.taejun.pe.kr max connections = 3 timeout 600 [web] ¼­ºñ½º¸í path ¼­ºñ½ºÇÒ µð·ºÅ丮 comment ¼³¸í uid ÆÄÀÏÀü¼ÛÇÏ´Â »ç¿ëÀÚÀÇ id. ±âº»°ªÀº nobody gid ÆÄÀÏÀü¼ÛÇÏ´Â »ç¿ëÀÚÀÇ ±×·ì id. ±âº»°ªÀº nobody use chroot À§ÀÇ path¸¦ root µð·ºÅ丮·Î »ç¿ë. º¸¾È»ó ÇÊ¿äÇÔ. read only ÀбâÀü¿ë hosts allow È£½ºÆ®º° Á¢¼ÓÇã¿ë. ±âº»°ªÀº all hostÀ̹ǷΠº¸¾ÈÀ» À¯ÁöÇÏ ·Á¸é ¹Ýµå½Ã ¼³Á¤ÇÔ max connections µ¿½ÃÁ¢¼ÓÀÚ¼ö timeout Ŭ¶óÀ̾ðÆ®¿¡¼­ Á¢±Ù½Ã ŸÀӾƿô½Ã°£. anonymous ·Î ¿î¿µÇÏ´Â °æ ¿ì ¼³Á¤À» ÇØ¾ß Å¬¶óÀ̾ðÆ®°¡ Á×¾úÀ» ¶§ ¼­¹ö¿¡¼­ Á¢¼ÓÀ» ÇØüÇÒ ¼ö ÀÖÀ½. * put(Ŭ¶óÀ̾ðÆ®¿¡¼­ ¼­¹ö·Î ¿Ã¸®´Â °æ¿ì)À» »ç¿ëÇϱâÀ§Çؼ­´Â read only = no ·Î ¼³Á¤À» Çؾߵ˴ϴÙ. ÀÌ ¿Ü¿¡µµ ¿©·¯ °¡Áö ¿É¼ÇÀÌ ÀÖÁö¸¸ ½ÇÁ¦·ÎÀº À§ÀÇ ¿É¼ÇÁ¤µµ°¡ ÀÚÁÖ »ç¿ë µË´Ï´Ù. ÇöÀç rsync ÀÚüÀûÀ¸·Î ¾Ïȣȭ´Â Áö¿øÇÏÁö ¾ÊÀ¸¸ç »ç¿ëÀÚ ÀÎÁõ¸¸ Áö¿øÇÕ´Ï´Ù. ÃßÈÄ¿¡´Â SSLÀ» Áö¿øÇÒ ¿¹Á¤À̸ç, ¸¸¾à ¾Ïȣȭ¸¦ »ç¿ëÇÏ·Á¸é ssh¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. 4. rsync »ç¿ëÇϱâ (Á¢±Ù Ŭ¶óÀ̾ðÆ®¸¦ www2.taejun.pe.krÀ̶ó°í °¡Á¤ÇÔ) rsync -avz --delete www1.taejun.pe.kr::web /home/taejun/~public_html -a´Â ¾ÆÄ«ÀÌºê ¸ðµå. ½Éº¼¸¯ ¸µÅ©, ¼Ó¼º, Æ۹̼Ç, ¼ÒÀ¯±Ç µî º¸Á¸ -v »ó¼¼ÇÏ°Ô º¸¿©¿ò -z Àü¼Û½Ã ¾ÐÃàÀ» ÇÔ. --delete www1.taejun.pe.kr¿¡¼­ web¿¡ ÇØ´çÇÏ´Â ³»¿ë(/home/www/htdocs) À» ww2.taejun.pe.kr ÀÇ /home/taejun/~public_html ·Î °¡Á®¿À¸é¼­ www1 (¼­¹ö)¿¡´Â ¾ø´Â ³»¿ëÀº www2¿¡¼­ »èÁ¦ÇÔ. ¸¸¾à www2 Â÷¿ø¿¡¼­ »ý¼ºÇÑ ÆÄ ÀÏÀ» º¸°üÇÏ·Á¸é ¿É¼Ç ¾ø¾Ú. rsync -avz foo:src/bar /data/tmp ´ÙÀ½ ³»¿ëÀº foo¶ó´Â È£½ºÆ®¿¡¼­ src/bar ¾ÈÀÇ ³»¿ëÀ» Áö¿ªÈ£½ºÆ®ÀÇ /data /tmp µð·ºÅ丮·Î ¿Å±â´Â °ÍÀÔ´Ï´Ù. ¿©±â¼­ ¾Ë¾ÆµÎ¾î¾ß ÇÒ °ÍÀÌ ÀÖ½À´Ï´Ù. ¸¸¾à À§¿¡¼­ src/bar/ ¶ó°í ÇÏ¸é ¾î¶»°Ô ´Þ¶óÁú±î¿ä? bar ´Â ±× µð·ºÅ丮 ÀÚü±îÁö Æ÷ÇÔÇؼ­ °¡Á®¿É´Ï´Ù. ±×·¸Áö¸¸ bar/ ¶ó°í µÚ¿¡ µð·ºÅ丮 Ç¥½Ã¸¦ ÇÏ¸é ±× µð·ºÅ丮¾È¿¡ ÀÖ´Â ³»¿ë¸¸ °¡Áö°í ¿É´Ï´Ù. »ó´çÈ÷ °á°ú°¡ ´Þ¶óÁú ¼ö ÀÖ°ÚÁö¿ä. ¶ÇÇÑ : °ú ::ÀÇ Â÷ÀÌ´Â ¹«¾ùÀϱî¿ä? : Àº rsh³ª ssh¸¦ »ç¿ëÇÏ´Â °ÍÀ̸ç :: Àº rsync ÀÚü¿¡¼­ Áö¿øÇÏ´Â ±â´ÉÀ» ÀÌ¿ë ÀڷḦ °¡Á®¿À´Â °ÍÀ¸·Î 873 TCP Æ÷Æ®¸¦ »ç¿ëÇÕ´Ï´Ù. »ó´çÈ÷ Çò°¥¸®Áö¿ä? : ¿¡¼­ ±âº»Àº rsh¸¦ ÀÌ¿ëÇÏÁö¸¸ -e ssh ¿É¼ÇÀ» ÀÌ¿ëÇÏ¿© ssh¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ssh¸¦ »ç¿ëÇÏ·Á¸é ºñ ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇؾßÇϴµ¥ À̰͵µ ÆÄÀÏÇüÅ·Π¸¸µé¾î¼­ ¿É¼Ç¿¡¼­ ÁöÁ¤ÇØÁÖ ¸é µË´Ï´Ù. ÀÌ¿¡ ´ëÇؼ­´Â µû·Î ¼³¸íÇÏÁö´Â ¾ÊÀ¸¸ç man page¸¦ Âü°íÇϼ¼ ¿ä. -avz µîÀÇ ¿É¼ÇÀÌ Àִµ¥ ÀÌÁß Áß¿äÇÑ ¿É¼Ç¸¸ ¼³¸íÀ» ÇÏ°Ú½À´Ï´Ù. -v verbose (ÀÚ¼¼ÇÏ°Ô º¸¿©ÁÜ) -a archive mode -u update only(»õ·Î¿î ÆÄÀÏÀ» µ¤¾î¾²Áö ¾ÊÀ½) --delete ¼­¹öÂÊ¿¡ ¾ø°í Ŭ¶óÀ̾ðÆ®ÂÊ¿¡¸¸ ÀÖ´Â ÆÄÀÏÀ» Áö¿ò -z compress (Àü¼Û½Ã ¾ÐÃàÀ» ÇÔ) --daemon ´ë¸ó ¸ðµå·Î ¿î¿µÇÔ (ÀÌ°Ç inetd.conf¿¡ ÁöÁ¤ÇÒ ¶§ ÇÊ¿äÇÔ) -a ´Â -rlptg ¿Í µ¿ÀÏÇÕ´Ï´Ù. -r recursive (ÇÏÀ§ µð·ºÅ丮±îÁö Æ÷ÇÔ) -l ½Éº¼¸¯ ¸µÅ© Àç»ý¼º -p ÆÛ¹Ì¼Ç ¾÷µ¥ÀÌÆ® -t º¯°æ½Ã°£ Àü¼Û (ÀÌ°ÍÀÌ ¾øÀ¸¸é Àü¼ÛÇÑ ½Ã°£À¸·Î ¹Ù²ñ) -g ±×·ìÀ̸§ º¯°æ ÀϹÝÀûÀ¸·Î rsync´Â ±æÀÌ¿Í time-stamp¸¦ ÀÌ¿ë ÆÄÀÏÀ» ºñ±³ÇÕ´Ï´Ù. ÀÌÁ¦ ½© ½ºÅ©¸³Æ®¸¦ ¸¸µé°í cron¿¡ µî·ÏÀ» ÇÏ¿© ÁÖ±âÀûÀ¸·Î µ¥ÀÌÅ͸¦ µ¿±â È­ÇÏ¸é µË´Ï´Ù. 5. ¸¶Ä¡¸ç ±âº»ÀûÀ¸·Î ¾Ïȣȭ¸¦ Áö¿øÇÏÁö ¾Ê´Â °ÍÀÌ ¾Æ½±°í ¾à°£Àº ºÒÆíÇÕ´Ï´Ù. ssh ¸¦ ¾²´Â °Íµµ ÇÑ°¡Áö ´ë¾ÈÀÌÁö¸¸ ºñ¹Ð¹øÈ£¸¦ ³Ö¾î¾ßÇÏ°í ÀÏÀÏÀÌ ³Ö±â ±ÍÂú À¸¸é ÆÄÀÏÇüÅ·ΠÁöÁ¤ÇÒ ¼ö Àִµ¥ ÀÌ·± ¹æ¹ýµµ º¸¾È¹®Á¦°¡ »ý±æ ¿©Áö°¡ ÀÖ°ÚÁö¿ä. À§¿¡¼­ ¸»À» ÇÑ ´ë·Î ¿¹Àü ÆÐÅ°Áö¿¡´Â º¸¾È ¹ö±×°¡ ÀÖÀ¸´Ï ¹Ýµå½Ã ÃÖ±Ù ÆÐ Å°Áö·Î ¾÷µ¥ÀÌÆ®¸¦ ÇÏ´Â °Í! ÀØÁö ¸¶¼¼¿ä.