사용자 도구

사이트 도구


project:btsyncforrpi

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
project:btsyncforrpi [2013/07/17 02:09] – [웹서버의 내용을 로컬 PC와 동기화] changwooproject:btsyncforrpi [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
-====== 라즈베리 파이에서 BittorrentSync로 데이터 동기화하기 ======+====== 라즈베리 파이에서 BitTorrentSync로 데이터 동기화하기 ======
 ===== 시작하기 ===== ===== 시작하기 =====
 {{http://screenshots.en.sftcdn.net/en/scrn/29000/29371/bittorrent-06-535x535.png?p=150&nolink | Bittorrent Image }} {{http://screenshots.en.sftcdn.net/en/scrn/29000/29371/bittorrent-06-535x535.png?p=150&nolink | Bittorrent Image }}
줄 7: 줄 7:
  
 한편 NAS 같은 장비들도 가정용으로 많이 보급이 되는 추세이고, 특히 라즈베리 파이 같은 저전력, 저가의 임베디드 디바이스들 또한 점차 알려지고 있습니다. 이런 장비를 사용해 개인 서버, 저장소 등등 다양하게 응용하시는 분들이 점점 많아지고 있습니다. 한편 NAS 같은 장비들도 가정용으로 많이 보급이 되는 추세이고, 특히 라즈베리 파이 같은 저전력, 저가의 임베디드 디바이스들 또한 점차 알려지고 있습니다. 이런 장비를 사용해 개인 서버, 저장소 등등 다양하게 응용하시는 분들이 점점 많아지고 있습니다.
-저도 얼마 전에 라즈베리 파이를 한 대 장만하여 집에 두고 저전력 서버로 사용하고 있습니다. USB로 집에 있는 노트북 하드디스크를 연결해 라즈베리 파이의 적은 저장공간(SDCARD)의 약점을 극복 중이죠. 물론 이런 싸구려(?) 장비는 전문 NAS 솔루션의 안정성과 성능과는 비교할 수 없습니다. 일단 웹서버로 쓰긴 하지만 그렇게 빠르진 않고, 하드디스크의 전송 속도도 상당히 느립니다. 개인적으로 쓸만하지, 익명의 대중을 대상으로 공개할 만한 서버는 아닙니다. 그렇지만 이 가격에 이러한 설비를 갖출 수 있다는 점에서 모든 단점은 용서됩니다.+저도 얼마 전에 라즈베리 파이를 한 대 장만하여 집에 두고 저전력 서버로 사용하고 있습니다. USB로 집에 있는 노트북 하드디스크를 연결해 라즈베리 파이의 적은 저장공간(SDCARD)의 약점을 극복 중이죠. 물론 이런 싸구려(?) 장비는 전문 NAS 솔루션이 자랑하는 안정성과 성능에 따라올 수 없습니다. 일단 웹서버로 쓰긴 하지만 참 느립니다. 개인적으로 쓸만하지, 익명의 대중을 대상으로 공개할 만한 서버는 아닙니다. 그렇지만 이 가격에 이러한 설비를 갖출 수 있다는 점에서 모든 단점은 용서됩니다.
  
-그런데 아주 심각한 문제가 하나 있습니다. NAS같은 데이터의 안정성을 라즈베리 파이 서버는 보장할 수 없다는 점입니다. NAS야 원래 데이터를 안정적으로 보관하려는 목적으로 전문 업체에서 심혈을 기울여 만든 솔루션입니다. 그 업체가 보증하고 파는 물건이니 믿고 구매하고, 안심하고 사용할 수 있지만, 이 놈의 라즈베리 파이는 정말 불안 요소가 많습니다. 언제 SD 카드의 수명이 다할 지 모르고, 약하디 약한 노트북 하드 디스크는 언제 문제가 생길 지 모릅니다. 웹서버에 중요한 데이터를 보관하려고 사용하는 건데, 제 역할을 정말 다해 줄지 의문스럽습니다.+하지만 지나칠 수 없는 한 가지 심각한 문제가 있습니다. 바로 데이터의 안정성입니다. 라즈베리 파이 서버는 NAS 수준의, 아니 그 절반 만큼도 보장할 수 없니다. NAS야 원래 데이터를 안정적으로 보관하려는 목적으로 전문 업체에서 심혈을 기울여 만든 솔루션입니다. 그 업체가 보증하고 파는 물건이니 믿고 구매해 안심하고 사용할 수 있지만, 이 놈의 라즈베리 파이는 그렇지 못합니다. 언제 SD 카드의 수명이 다할 지 모르고, 노트북 하드 디스크 달랑 하나에 의해 데이터를 저장합니다. 웹서버에 중요한 데이터를 보관하려고 사용하는 건데, 솔직히 제 역할을 정말 다해 줄지 의문스럽습니다.
  
-현재 저도 드롭박스 서비스를 이용중이지만, 솔직히 금액을 지불하면서까지 드롭박스를 사용하고 싶지는 않습니다. 물론 스카이드라이브 등등의 다른 클라우드 서비스를 이용하면 되겠지만, 그럼 왠지 클라우드 서비스로 범벅이 될 것 같네요. 최근에는 그런 여러 클라우드 서비스를 한 데 묶어 통합 관리해주는 서비스 또한 나왔지만, 그마저도 유료입니다.+현재 저도 드롭박스 서비스를 이용 중이지만, 솔직히 이 웹서버의 백업을 위해 금액을 지불하면서 드롭박스를 사용하고 싶지는 않습니다. 물론 스카이드라이브 등등의 다른 클라우드 서비스를 이용하면 되겠지만, 그럼 왠지 클라우드 서비스로 범벅이 될 것 같네요. 최근에는 그런 여러 클라우드 서비스를 한 데 묶어 통합 관리해주는 서비스 또한 나왔지만, 그마저도 유료입니다.
  
-저는 2~3대의 PC를 늘 보유하고 있니다. 모두 최신의 하드웨어는 아니지만, 각자 하드디스크의 용량은 최소 80GB가 넘습니다. 나쁜 말로 집이 한꺼번에 홀랑 타버리지 않는 이상, 각 하드디스크에 복사본을 만들어 놓기만 해도 2중 3중의 백업이 만들어지는 셈입니다. NAS 수준의 안정성과 효율성은 아니지만, 그래도 꽤 괜찮은 수준의 데이터 백업 및 동기화를 꾸려 나갈 수가 있을 겁니다.+저는 2~3대의 PC를 보유하고 있고 자주 사용합니다. 최신의 하드웨어는 아니지만, 각자 하드디스크의 용량은 최소 80GB가 넘습니다. 나쁜 말로 집이 한꺼번에 홀랑 타버리지 않는 이상, 각 하드디스크에 복사본을 만들어 놓기만 해도 2중 3중의 백업이 만들어지는 셈입니다. NAS 수준의 안정성과 효율성은 아니지만, 그래도 꽤 괜찮은 수준의 데이터 백업 및 동기화를 꾸려 나갈 수가 있을 겁니다.
  
 문제는 각 장치끼리 그렇게 스마트하게 해 줄 소프트웨어가 없었던 거지요. 그런데 BitTorrent 기술을 응용해 개인이 소유한 장치끼리 공유/동기화를 시도하는 실험적인 프로젝트가 있더군요. 바로 이번에 소개할 '[[http://labs.bittorrent.com/experiments/sync.html|BitTorentSync]]'입니다. 개인적으로 불법 자료 공유로 항상 천덕꾸러기 신세를 받던 BitTorrent 기술이 절묘하게 응용된 사례라고 절찬하고 있습니다. :-) 문제는 각 장치끼리 그렇게 스마트하게 해 줄 소프트웨어가 없었던 거지요. 그런데 BitTorrent 기술을 응용해 개인이 소유한 장치끼리 공유/동기화를 시도하는 실험적인 프로젝트가 있더군요. 바로 이번에 소개할 '[[http://labs.bittorrent.com/experiments/sync.html|BitTorentSync]]'입니다. 개인적으로 불법 자료 공유로 항상 천덕꾸러기 신세를 받던 BitTorrent 기술이 절묘하게 응용된 사례라고 절찬하고 있습니다. :-)
줄 303: 줄 303:
   stop)   stop)
         echo -n "Stopping $DESC: "         echo -n "Stopping $DESC: "
-        start-stop-daemon --stop --exec $DAEMON+        start-stop-daemon --stop --user $DAEMON_USER --pidfile $PIDFILE --exec $DAEMON
         echo "$NAME."         echo "$NAME."
         ;;         ;;
줄 332: 줄 332:
   $ sudo chown root:root /etc/init.d/btsync   $ sudo chown root:root /etc/init.d/btsync
   $ sudo chmod 755 /etc/init.d/btsync   $ sudo chmod 755 /etc/init.d/btsync
 +  
 +==== 업데이트 스크립트 제작 ====
 +btsync가 자주 업데이트되므로 업테이트 될 때 마다 쉽게 업데이트하도록 스크립트를 만듭니다.
 +<code bash update_btsync>
 +#!/bin/bash
 +if [ `whoami` != "root" ]; then
 +        echo "Superuser acceess required!"
 +        exit 1
 +fi
 +
 +echo "Beginning update..."
 +mkdir ./btsync_update_tmp
 +wget -O - http://btsync.s3-website-us-east-1.amazonaws.com/btsync_arm.tar.gz | tar xz -C ./btsync_update_tmp
 +cp btsync_update_tmp/btsync /usr/local/bin
 +rm -fr btsync_update_tmp
 +
 +echo "Update complete!"
 +</code>
  
 ==== 동작 테스트 ==== ==== 동작 테스트 ====
줄 466: 줄 484:
 {{ :project:btsyncforrpi:btsync_syncing.png?nolink |}} {{ :project:btsyncforrpi:btsync_syncing.png?nolink |}}
  
-싱크가 다 끝나면 클라이언트 쪽에서도 웹서버를 켜고 위키에 접속해 봅니다. 데스크탑에서 문서를 수정해 보고, 그것이 서버로도 반영되는지 확인해 봅니다.+싱크가 다 끝나면 클라이언트 쪽에서도 웹서버를 켜고 위키에 접속해 봅니다. 데스크탑에서 문서를 수정해 보고, 그것이 서버로도 반영되는지 확인해 봅니다. 실제로 저는 이 문장부터는 데스크탑에서 작성 중이랍니다. 믿어주세요 :-) 역시 데스크탑의 성능이 월등하군요. 작업하기 훨씬 더 쾌적합니다. 일단 데이터가 다 싱크된 후에는 그렇게 많은 정보가 변화하지 않으므로 잠깐잠깐 기다려주면 금방 싱크가 유지됩니다. 만일 일이 생겨 다른 장비를 가지고 어디를 가든지 인터넷과 연결되어 있으면 최소한 라즈베리 파이의 서버를 통해 싱크를 맞출 수 있습니다. 
  
-===== 문제 해결 =====+이제 라즈베리 파이가 재부팅되면 btsync도 자동으로 실행되도록 처리하기만 하면 됩니다. 
 +  $ sudo update-rc.d btsync defaults 
 + 
 + 
 +==== 문제 해결 ====
 저도 싱크가 가능하도록 만들기 위해서 꽤 시행착오를 했습니다. 시행착오 중 알게 된 사항을 같이 기록합니다. 저도 싱크가 가능하도록 만들기 위해서 꽤 시행착오를 했습니다. 시행착오 중 알게 된 사항을 같이 기록합니다.
   * 소프트 링크는 지원되지 않습니다. ''dir'' 값에는 실제 주소를 기입하세요.   * 소프트 링크는 지원되지 않습니다. ''dir'' 값에는 실제 주소를 기입하세요.
줄 474: 줄 496:
   * 싱크하려는 디렉토리는 btsync의 쓰기 권한이 반드시 허용되어 있어야 합니다.   * 싱크하려는 디렉토리는 btsync의 쓰기 권한이 반드시 허용되어 있어야 합니다.
   * 싱크되지 않는다면 ''/home/btsync/.btsync/sync.log'' 파일을 보면서 문제를 파악해야 합니다.   * 싱크되지 않는다면 ''/home/btsync/.btsync/sync.log'' 파일을 보면서 문제를 파악해야 합니다.
-  * 혹여 이전부터 BitTorrentSync를 알고 계신 분들 중에 "Destination folder cannot be identified. Would you like to reset ownership?"라는 에러를 만나는 분이 있을지 모르겠습니다. 이 경우 싱크하려는 디렉토리에서 숨겨진 파일인 '.SyncID', '.SyncIgnore' 파일을 삭제하면 됩니다((http://forum.bittorrent.com/topic/17196-destination-folder-cannot-be-identified-would-you-like-to-reset-ownership)). +  * 혹여 이전부터 BitTorrentSync를 알고 계신 분들 중에 "Destination folder cannot be identified. Would you like to reset ownership?"라는 에러를 만나는 분이 있을지 모르겠습니다. 이 경우 싱크하려는 디렉토리에서 숨겨진 파일인 '.SyncID', '.SyncIgnore' 파일을 삭제하면 됩니다((http://forum.bittorrent.com/topic/17196-destination-folder-cannot-be-identified-would-you-like-to-reset-ownership)). 
 +  * 새롭게 싱크를 받은 쪽에서도 권한 문제는 중요합니다. 언제든 웹서버가 올바르게 파일을 읽을 수 있는지, 또 기록을 해야 할 곳에는 기록을 할 수 있는지 체크하세요. 
 + 
 +=== 싱크된 파일의 소유권 및 권한 문제 === 
 +서로 다른 시스템간에 파일이 오가는 것이므로 소유권과 권한 문제가 야기될 수 있습니다. 이렇게 되면 위키 프로그램이 올바르게 데이터를 읽고 쓰기가 어려워집니다. 이 경우 싱크를 맞추는 시스템끼리 서로 계속 소유권과 권한을 확인하여 수정하는 수 밖에 없습니다. BitTorrentSync가 알아서 맞춰 주면 좋겠습니다. 
 + 
 +도쿠위키 디렉토리에 다음과 같이 쉘 스크립트를 작성합니다. 
 +<code bash make_ready.sh> 
 +#!/bin/bash 
 +if [ $HOSTNAME = "desktop" ]; then 
 + DOKUROOT=/home/changwoo/public_html/dokuwiki 
 + /bin/chown changwoo:apache -R $DOKUROOT/data $DOKUROOT/conf $DOKUROOT/lib/plugins 
 +elif [ $HOSTNAME  = "MiniServer" ]; then 
 + DOKUROOT=/home/changwoo/public_html/dokuwiki 
 + /bin/chown changwoo:apache -R $DOKUROOT/data $DOKUROOT/conf $DOKUROOT/lib/plugins 
 +elif [ $HOSTNAME = "namchang-uui-Mac-mini.local" ]; then 
 + DOKUROOT=/Users/changwoo/public_html/dokuwiki 
 + /bin/chown -R _www:_www $DOKUROOT/data $DOKUROOT/conf $DOKUROOT/lib/plugins 
 +fi 
 +#echo $DOKUROOT 
 +/bin/chmod -R 777 $DOKUROOT/data $DOKUROOT/conf $DOKUROOT/lib/plugins 
 +</code> 
 + 
 +''$HOSTNAME = "X_HOST"''에 각 서버의 host이름을 적어줍니다. 그리고 ''DOKUROOT'' 변수는 각 시스템에 위치한 도쿠위키의 루트 디렉토리를 적습니다. 물론 이 경로는 링크여도 관계없습니다. 그리고 저장합니다. 파일에 실행 권한을 줍니다. 
 + 
 +  $ chmod a+x make_ready.sh 
 + 
 +그리고 각 시스템이 N분마다 이 스크립트를 실행하도록 만듭니다. 
 +  $ sudo crontab -e 
 +  */N * * * * <PATH_WHERE_SCRIPT_IS>/make_ready.sh 
 +N을 적절 
 +히 숫자로 바꾸어주세요. 
 + 
 +===== 마무리 ===== 
 +최신 P2P 기술인 BitTorrent를 응용한 데이터 동기화 프로그램인 BitTorrentSync를 이용하여 라즈베리 파이 웹서버의 데이터를 동기화시켜 보았습니다. 라즈베리 파이 웹서버는 아주 저렴한 가격으로 쉽게 웹서버를 구축할 수 있게 해 주었습니다. 그러나 기기 자체의 퍼포먼스가 그렇게 좋지 않고, 견고한 데이터의 안정성을 보장해 주지 못합니다. 그렇기 때문에 간단한 작업을 하더라도 병목 현상이 잦은데다, 언제 발생할지 모르는 데이터 재난에 매우 취약합니다. 
 + 
 +이렇게 열악한 라즈베리 파이 서버에 BitTorrentSync를 접목시키면 웹서버의 데이터를 여러 벌 분산시켜 보관할 수 있습니다. 물론 드롭박스나 엔드라이브 같은 전문적인 서비스의 안정성에 비할 바는 아닙니다만, BitTorrentSync는 내가 가진 하드디스크를 이용할 수 있으므로 무진장한 용량의 데이터를 마음대로 활용하는 것이 가능합니다. 데스크탑의 강력한 자원을 활용하여 작업을 처리하고 처리한 결과를 다시 라즈베리 파이가 수용할 수 있기 때문에 보다 쾌적한 작업이 가능합니다. 라즈베리 파이로서도 작업량의 부담을 덜 수 있어서 좋습니다. 라즈베리 파이나 조금 성능이 열악한 NAS로 개인 웹서버를 운영하시는 분께는 이러한 방법을 한 번 추천드리고 싶습니다. 
 + 
 +물론 BitTorrentSync가 완벽한 대안은 아닙니다. 싱크가 잘 된다고 방심하시면 절대 안 됩니다. 반드시 평소 해 오시던 백업과 혼용하세요. BitTorrentSync는 아직 시험적인 서비스에 불과합니다. 참신하고 혁신적인 서비스이지만 조금 더 지켜봐야 할 겁니다. 한편 제가 예를 든 도쿠위키의 핵심 데이터는 잘 정리해서 압축하면 그렇게 많은 용량을 차지하지 않습니다. 대부분의 개인 웹서버의 데이터는 이럴 것입니다. 이렇게 스냅샷을 만들어 클라우드 스토리지 서비스와 혼용하면 더욱 이상적으로 웹서버 데이터를 유지관리하실 수 있으리라 생각합니다. 
 + 
 +===== 참고할 만한 문서들 ===== 
 +  * [[project:dokuwikisetting|nginx와 dokuwiki를 이용해 로컬 개인 위키를 구축해보세요!]]
project/btsyncforrpi.1374026975.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki