Windows¿Í Linux/Unix°£ÀÇ ÆÄÀÏ µ¿±âÈ­

ÀüÁ¤È£ (mahajjh@myscan.org)


Copyright (c) 2001 Jeon, Jeongho.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.


³ª´Â ȨÆäÀÌÁö¸¦ ¸¸µé¶§ ´À¸° ³×Æ®¿÷ ¼Óµµ ¶§¹®¿¡ º¸Åë Áý¿¡¼­ ÀÛ¾÷À» ÇÑ ÈÄ FTP¸¦ »ç¿ëÇÏ¿© À¥¼­¹ö·Î ¿Å±ä´Ù. ²À ´À¸° ³×Æ®¿÷ÀÌ ¾Æ´Ï¶óµµ À©µµ¿ìÁî¿¡¼­¸¸ ½ÇÇàµÇ´Â À¥ÀúÀÛÅø ¶§¹®¿¡ À©µµ¿ìÁî¿¡¼­ ÀÛ¾÷À» ÇÑ ÈÄ À¥¼­¹ö·Î ¿Å±â´Â °æ¿ìµµ ÀÖÀ» °ÍÀÌ´Ù. ȨÆäÀÌÁö°¡ ¾Æ´Ï¶óµµ Cygwin¿¡¼­ C ÇÁ·Î±×·¡¹Ö ÀÛ¾÷°ú °°ÀÌ À©µµ¿ìÁî¿Í À¯´Ð½º°£¿¡ ÀÛ¾÷ÇÑ ÆÄÀÏÀ» µ¿±âÈ­ÇÏ´Â °æ¿ì°¡ ¸¹´Ù.

ÀÌ °æ¿ì º¸Åë °°Àº ³×Æ®¿÷ ¾È¿¡ ÀÖ´Â °æ¿ì SMB³ª NFS¸¦, ´Ù¸¥ ³×Æ®¿÷¿¡ ÀÖ´Â °æ¿ì FTP, rcp, scp, (ȨÆäÀÌÁöÀÇ °æ¿ì) WebDav µîÀ» »ç¿ëÇÑ´Ù. ±×·¯³ª SMB³ª NFS´Â º°µµÀÇ ¼ÒÇÁÆ®¿þ¾î¸¦ ¼³Ä¡ÇØ¾ß ÇÏ°í, º¹ÀâÇÑ ¼³Á¤ÀÌ ÇÊ¿äÇÏ´Ù. FTP´Â µ¿±âÈ­ÇÏ·Á´Â ÆÄÀÏÀÌ ¿©·¯°³À϶§ »ç¿ëÇϱ⠾î·Æ°í, ¸Å¹ø ÀÛ¾÷ ÆÄÀÏÀÌ ¼öÁ¤µÉ¶§¸¶´Ù µ¿±âÈ­ÇϱⰡ ºÒÆíÇÏ´Ù. rcp´Â µð·ºÅ丮 Àüü¸¦ ¿Å±æ ¼ö ÀÖÁö¸¸, ¾ÏÈ£¿Í ÆÄÀÏ ³»¿ëÀ» ³×Æ®¿÷ »ó¿¡ ±×³É º¸³»´Â À§ÇèÀÌ ÀÖ´Ù. scp´Â Àü¼ÛÀ» ¾ÏȣȭÇÏÁö¸¸, ¼öÁ¤µÈ ÆÄÀϸ¸ Àü¼ÛÇÏ´Â ±â´ÉÀÌ ¾ø´Ù. ¹°·Ð CVS¸¦ ssh¿Í °°ÀÌ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖÁö¸¸ ÀÌ ±Û¿¡¼­´Â ´Ù¸¥ ¹æ¹ýÀ» ´Ù·é´Ù.

ÀÌ ±Û¿¡¼­´Â rsync¸¦ »ç¿ëÇÑ´Ù. rsync´Â ssh·Î Àü¼ÛÀ» ¾ÏȣȭÇÏ°í, ¼öÁ¤µÈ ÆÄÀÏÀÇ ¼öÁ¤µÈ ºÎºÐ¸¸ ¾ÐÃàÇؼ­ Àü¼ÛÇϹǷΠ³×Æ®¿÷ »ç¿ë·®À» ÁÙÀδÙ. ¶Ç, rcp, scp¿Í »ç¿ë¹ýÀÌ ºñ½ÁÇÏ´Ù.

 

1. Áغñ

¸ÕÀú, Ŭ¶óÀ̾ðÆ®(Cygwin)¿Í ¼­¹ö(À¥¼­¹ö) ¸ðµÎ¿¡ rsync°¡ ¼³Ä¡µÇÀÖ¾î¾ß ÇÑ´Ù. CygwinÀº ±âº»ÀûÀ¸·Î rsync¸¦ ¼³Ä¡ÇϹǷΠ¼­¹ö¿¡ rsync ¸í·ÉÀÌ ÀÖ´ÂÁö ½ÇÇàÇÏ¿© È®ÀÎÇغÁ¶ó.

µÎ¹ø°, Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö ¸ðµÎ¿¡ ssh°¡ ¼³Ä¡µÇÀÖ°í, ¼­¹ö°¡ sshd¸¦ ½ÇÇàÇØ¾ß ÇÑ´Ù. Cygwin°ú ´ëºÎºÐÀÇ ¹ü¿ë ¸®´ª½º ¹èÆ÷º»¿¡ ±âº»ÀûÀ¸·Î ¼³Ä¡µÇÀÖÀ» °ÍÀÌ´Ù. Á¤»óÀûÀ¸·Î ¼³Ä¡µÇ°í ¼³Á¤µÇ¾ú´ÂÁö È®ÀÎÇϱâÀ§ÇØ Cygwin¿¡¼­ ´ÙÀ½°ú °°ÀÌ °Ë»çÇÑ´Ù.

$ ssh user_id@my.server.name ls
user_id@my.server.name's password: [°èÁ¤¾ÏÈ£]
...
...
...
$ ssh user_id@my.server.name rsync
user_id@my.server.name's password: [°èÁ¤¾ÏÈ£]
rsync version ...
...
...

¾Æ¸¶ óÀ½À¸·Î ¼­¹ö¿¡ ¿¬°áÇÑ´Ù¸é ¼­¹ö¸¦ ¹ÏÀ» ¼ö ÀÖ´ÂÁö¸¦ ¹°¾îº¼ °ÍÀÌ´Ù. yes·Î ´ë´äÇÏ¸é µÈ´Ù. °èÁ¤¾ÏÈ£¸¦ ÀÔ·ÂÇÑ ÈÄ ¼­¹öÀÇ È¨µð·ºÅ丮 ¸ñ·ÏÀÌ Ãâ·ÂµÇ¸é Á¤»óÀÌ´Ù. µÎ¹ø° ¸í·ÉÀº rsync°¡ ¼­¹öÀÇ ½ÇÇà°æ·Î ¾È¿¡ ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. µµ¿ò¸»ÀÌ Ãâ·ÂµÇ¸é Á¤»óÀÌ´Ù.

ÆÁ
¼­¹ö¿¡ ÀÏ¹Ý »ç¿ëÀÚ·Î rsync¸¦ ¼³Ä¡ÇÒ¶§ ÁÖÀÇÁ¡

¸¸¾à ¼­¹ö¿¡ rsync°¡ ¼³Ä¡µÇÀÖÁö ¾Ê¾Æ¼­ °ü¸®ÀÚ°¡ ¾Æ´Ñ ÀÏ¹Ý »ç¿ëÀÚ°¡ rsync¸¦ ¼³Ä¡ÇØ¾ß ÇÑ´Ù¸é, rsync°¡ ½© ¼³Á¤ÆÄÀÏÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î ÇÁ·Î±×·¥ÀÇ °æ·Î¸¦ ssh¿¡°Ô Á÷Á¢ ¾Ë·ÁÁà¾ß ÇÑ´Ù. ¸ÕÀú ´ÙÀ½°ú °°ÀÌ ssh ±âº» ½ÇÇà°æ·Î¸¦ ¾Ë¾Æ³½´Ù.

$ ssh user_id@my.server.name echo '$PATH'
user_id@my.server.name's password:
/usr/bin:/bin:/usr/sbin:/sbin


¸¸¾à rsync°¡ $HOME/bin¿¡ ÀÖ´Ù¸é, ~/.ssh/environment¿¡ ´ÙÀ½À» ÀÔ·ÂÇÑ´Ù. ¿©±â¼­ ȯ°æº¯¼ö($PATH,$HOME) ´ë½Å Àý´ë°æ·Î¸¦ ÀÔ·ÂÇØ¾ß ÇÑ´Ù.

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/home/mahajjh/bin


 

2. rsync·Î µ¿±âÈ­

¿ì¼± ȨÆäÀÌÁö(~/public_html)¸¦ À©µµ¿ìÁî·Î °¡Á®¿Â ÈÄ, ¼öÁ¤ÇÒ¶§¸¶´Ù ¼öÁ¤ÇÑ ³»¿ëÀ» ¼­¹ö¿¡ °»½ÅÇÏ¸é µÈ´Ù.

$ rsync -PCzauve ssh user_id@my.server.name:~/public_html .
user_id@my.server.name's password: [°èÁ¤¾ÏÈ£]
building file list ... done
...
...
...
total size is ...
$ [ÀÛ¾÷]
$ rsync -PCzauve ssh public_html user_id@my.server.name:~/
user_id@my.server.name's password: [°èÁ¤¾ÏÈ£]
building file list ... done
...
...
...
total size is ...

ù¹ø° ¸í·ÉÀº ¼­¹ö¿¡¼­ ȨÆäÀÌÁö ÆÄÀϵéÀ» °¡Á®¿Â´Ù. ±×Èķδ ¼­¹ö¿¡¼­ ÆÄÀÏÀ» ¼öÁ¤ÇÑ °æ¿ì¿¡ ½ÇÇàÇÑ´Ù. À©µµ¿ìÁî¿¡¼­¸¸ ÀÛ¾÷À» ÇÑ´Ù¸é ´Ù½Ã ½ÇÇàÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¿øÇÏ´Â ÀÛ¾÷À» ÇÑ ÈÄ µÎ¹ø° ¸í·ÉÀº ¼öÁ¤µÈ ºÎºÐÀ» ¼­¹ö¿¡ °»½ÅÇÑ´Ù. À©µµ¿ìÁî¿¡¼­ ÀÛ¾÷À» ÇÑ ÈÄ ÀÌ ¸í·É¾î¸¦ ½ÇÇàÇÏ¸é µÈ´Ù. »ç¿ëÇÑ rsync ¿É¼ÇÀº ´ÙÀ½°ú °°´Ù.

-P (--partial --progress) À̾î¹Þ±â(iso °°ÀÌ Å« ÆÄÀÏ¿¡ À¯¿ë)¿Í Àü¼Û ÁøÇà»óȲ Ãâ·Â
-C (--cvs-exclude) CVS¿¡¼­ ¹«½ÃÇÏ´Â ÆÄÀÏÀ» ¹«½Ã. ¿¹, CVS, *~, #*, *.old, *.bak, *.o core µî
-z (--compress) Àü¼Û ³»¿ë ¾ÐÃà
-a (--archive) µð·ºÅ丮 ±¸Á¶ Àüü¸¦ ÆÄÀÏ ¼Ó¼ºÀ» À¯ÁöÇÑü·Î ¿Å±è
-u (--update) ³ªÁß¿¡ ¼öÁ¤µÈ ÆÄÀÏÀº À¯Áö. (Ŭ¶óÀ̾ðÆ®¿Í ¼­¹öÀÇ ½Ã½ºÅÛ ½Ã°£ Â÷ÀÌ°¡ ÀÛ´Ù´Â °¡Á¤ÇÏ¿¡)
-v (--verbose) Àü¼Û »óȲ°ú °á°ú Ãâ·Â
-e (--rsh) Àü¼Û¹æ¹ý ¼±ÅÃ. µÚ¿¡ ¾Æ±Ô¸ÕÆ®·Î ssh
-n (--dry-run) ½ÇÁ¦ ÆÄÀÏÀ» Àü¼ÛÇÏÁö ¾Ê´Â´Ù. ½ÇÁ¦ Àü¼ÛÇϱâ Àü¿¡ Å×½ºÆ®¿ëÀ¸·Î »ç¿ë

¿É¼Ç µÚ¿¡ º¹»çÇØ¿Ã °÷°ú º¹»çÇÒ °÷ÀÌ ³ª¿Â´Ù. ¿©±â¼­ º¹»çÇØ¿Ã °÷¿¡ Çϳª ¼³¸íÇÒ ³»¿ëÀÌ ÀÖ´Ù. À§¿¡¼­¿Í °°ÀÌ °æ·Î µÚ¿¡ /°¡ ¾øÀ¸¸é µð·ºÅ丮 ÀÚü¸¦ ¶æÇÏ°í, /°¡ ÀÖ´Ù¸é µð·ºÅ丮 ¾ÈÀÇ ÆÄÀÏ Àüü¸¦ ¶æÇÑ´Ù. Áï, ...:~/public_html . °ú ...:~/public_html/ public_html ÀÇ °á°ú´Â °°´Ù. ... public_html ...:~/ °ú ... public_html/ ...:~/public_html µµ ¸¶Âù°¡Áö´Ù. È¥µ¿µÈ´Ù¸é -n ¿É¼ÇÀ¸·Î ¸ÕÀú Å×½ºÆ®Çغ¸¸é µÈ´Ù.

 

3. °ÔÀ¸¸¥ ¹æ¹ý

ù¹ø°·Î alias¸¦ ÁöÁ¤ÇÏ¿© ¿É¼ÇÀ» »ý·«ÇÑ´Ù. ~/.bashrc¿¡,

alias rr='rsync -PCzauve ssh '
alias rt='rsync -PCnauve ssh '
alias rrp='rsync -PCzauve ssh ~/public_html user_id@my.server.name:~/'

ÀÏ¹Ý Àü¼Û ¸í·É¾î¸¦ rr, ÀÏ¹Ý Å×½ºÆ® ¸í·É¾î¸¦ rt, ȨÆäÀÌÁö Àü¼Û ¸í·É¾î¸¦ rrp·Î ÇغôÙ.

µÎ¹ø°·Î ¾ÏÈ£¸¦ ÀÔ·ÂÇÏÁö ¾Ê´Â ¹æ¹ýÀÌ ÀÖ´Ù. ¸Å¹ø ¾ÏÈ£¸¦ ÀÔ·ÂÇϱ⠱ÍÂúÀº °Íµµ »ç½ÇÀÌÁö¸¸, ¸¸¾à cron ÀÛ¾÷À¸·Î rsync¸¦ »ç¿ëÇÑ´Ù¸é ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù.

...