Language:EN / NE / AE / DE / IT

안녕하세요. 이번에는 클라우드 동기화 대용 비트토렌트 싱크 서버를 설치해 보도록 하겠습니다.


https://www.resilio.com/




예전에는 비트토렌트 싱크라고 불렸는데 기능은 같은데 다른 회사로 인수가 된듯한 느낌입니다.


resilio sync 라고 불리네요.


비트토렌트 싱크는 동기화할 폴더를 지정해서 코드로 공유폴더를 공유한 다음 클라이언트와 클라이언트 간 토렌트 프로토콜을 통해서 파일 공유가 되는 방식입니다.


0. 활용 예시


저의 경우에는 장비가 총 3대를 사용합니다. 

1. 태블릿

2. 휴대폰

3. PC

(4. 백업 서버)


저는 학부생으로써, 수업자료들과 제가 쓴 리포트 등을 이때까지 모아오고 있습니다.

예로써 리포트를 작성한다고 합니다.


태블릿에서 리포트를 작성 하다가 저장을 합니다. 그 후 PC로 이어서 작성하려고 하려고 합니다.

이 경우에는 어쩔 수 없이 파일을 USB에 담아서 옮기거나 이메일로 보내서 다시 여는 등의 번거로운 작업을 해야합니다.


그러나 한 폴더를 비트 토렌트 싱크로 동기화를 걸어두면, 태블릿에서 작성하다가 저장된 문서는 자동으로 PC 의 지정한 폴더로 전송이 됩니다. 자동으로 동기화가 되기 때문에 PC에 그대로 앉아서 작업을 하면 됩니다.


(그러나 동시에 1개의 파일을 수정할 수는 없습니다.)


한편, 태블릿에서 작성한 문서가 PC가 전원이 꺼져있어서 동기화가 되지 않을경우에는 4번 백업서버를 통해 동기화가된 상태이기 때문에 차후에 태블릿이 꺼져있거나 하여도 4번 백업서버와 PC가 동기화 되기 때문에 문제가 없습니다.


즉, 한 폴더를 4개의 기기가 동일한 상태를 유지하는 것입니다.


아래는 제가 사용하고 있는 btsync 사진입니다.



위 사진에서 알 수 있듯이 읽기전용으로도 공유가 가능합니다.


한편, 서버에서 서버로 백업을 하고자 할 경우에도 요긴하게 사용이 됩니다. 토렌트 프로토콜을 사용하기 떄문에 속도는 굉장히 빠릅니다.


휴대폰의 경우에도 마켓에 검색을 해 보면 앱이 존재합니다.


https://play.google.com/store/apps/details?id=com.resilio.sync


휴대폰의 사진을 그대로 서버에 백업하거나 다른 컴퓨터에 동기화 하는 용도로도 사용이 가능합니다.



결론적으로는 U5PVR 에 상기 앱을 설치하는 것이나 리눅스쪽에 btsync 를 설치하는 것이나 동일한 효과입니다. btsync 는 서로가 클라이언트이고 서버가 되기 떄문입니다.


그러나 웹으로 관리를 하려는 편리함 때문에 우분투/데비안 패키지를 설치하는 것입니다.


1. btsync 패키지 설치하기


먼저 btsync 레포를 추가합니다.


root@u5pvr-debian:~# nano /etc/apt/sources.list


# debian jessie repo

deb http://ftp.debian.org/debian/ jessie main contrib non-free

deb-src http://ftp.debian.org/debian/ jessie main contrib non-free


# debian jessie backports repo

deb http://ftp.debian.org/debian jessie-backports main


# plexmediaserver repo

deb https://dev2day.de/pms/ jessie main


# btsync repo

deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free

# 위의 주소를 추가합니다.


다음으로 키 값을 추가합니다.


root@u5pvr-debian:~# wget -qO - https://linux-packages.resilio.com/resilio-sync/key.asc | sudo apt-key add -

OK

root@u5pvr-debian:~#


패키지 리스트를 업데이트 하고 btsync 를 설치합니다.

공식 레포에서 설치를 하니 패키지 이름이 resilio-sync 이네요.


root@u5pvr-debian:~# apt-get update

Get:1 http://linux-packages.resilio.com resilio-sync InRelease [3730 B]

Get:2 http://linux-packages.resilio.com resilio-sync/non-free armhf Packages [477 B]

Ign http://ftp.debian.org jessie InRelease

Get:3 http://ftp.debian.org jessie-backports InRelease [166 kB]

Ign http://linux-packages.resilio.com resilio-sync/non-free Translation-en

Hit https://dev2day.de jessie InRelease

Hit https://dev2day.de jessie/main armhf Packages

Get:4 https://dev2day.de jessie/main Translation-en [320 B]

Hit http://ftp.debian.org jessie Release.gpg

Get:5 https://dev2day.de jessie/main Translation-en [320 B]

Hit http://ftp.debian.org jessie Release

Get:6 https://dev2day.de jessie/main Translation-en [320 B]

Get:7 https://dev2day.de jessie/main Translation-en [320 B]

Get:8 https://dev2day.de jessie/main Translation-en [320 B]

Ign https://dev2day.de jessie/main Translation-en

Get:9 http://ftp.debian.org jessie-backports/main armhf Packages/DiffIndex [27.8 kB]

Get:10 http://ftp.debian.org jessie-backports/main Translation-en/DiffIndex [27.8 kB]

Hit http://ftp.debian.org jessie/main Sources

Hit http://ftp.debian.org jessie/contrib Sources

Hit http://ftp.debian.org jessie/non-free Sources

Hit http://ftp.debian.org jessie/main armhf Packages

Hit http://ftp.debian.org jessie/contrib armhf Packages

Hit http://ftp.debian.org jessie/non-free armhf Packages

Hit http://ftp.debian.org jessie/contrib Translation-en

Hit http://ftp.debian.org jessie/main Translation-en

Hit http://ftp.debian.org jessie/non-free Translation-en

Get:11 http://ftp.debian.org jessie-backports/main armhf 2017-04-04-0826.17.pdiff [1118 B]

Get:12 http://ftp.debian.org jessie-backports/main armhf 2017-04-04-0826.17.pdiff [1118 B]

Get:13 http://ftp.debian.org jessie-backports/main 2017-04-04-0826.17.pdiff [312 B]

Get:14 http://ftp.debian.org jessie-backports/main 2017-04-04-0826.17.pdiff [312 B]

Fetched 227 kB in 17s (13.0 kB/s)

Reading package lists... Done


root@u5pvr-debian:~# apt-get install resilio-sync

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following NEW packages will be installed:

  resilio-sync

0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.

Need to get 9292 kB of archives.

After this operation, 11.6 MB of additional disk space will be used.

Get:1 http://linux-packages.resilio.com/resilio-sync/deb/ resilio-sync/non-free resilio-sync armhf 2.4.4-1 [9292 kB]

Fetched 9292 kB in 6s (1480 kB/s)

Selecting previously unselected package resilio-sync.

(Reading database ... 27475 files and directories currently installed.)

Preparing to unpack .../resilio-sync_2.4.4-1_armhf.deb ...

Running in chroot, ignoring request.

Unpacking resilio-sync (2.4.4-1) ...

Processing triggers for systemd (215-17+deb8u6) ...

Processing triggers for man-db (2.7.0.2-5) ...

Setting up resilio-sync (2.4.4-1) ...

Starting Resilio Sync

Processing triggers for systemd (215-17+deb8u6) ...

root@u5pvr-debian:~#


다음으로 WebUI 포트를 수정하기 위해 아래의 파일을 수정합니다.


포트의 경우 U5PVR 의 경우 안드로이드 단의 oscam 이 사용중이라 사용할 수가 없습니다. 


따라서 저는 11111 포트로 할당해 보았습니다.

(마음에 드시는 포트를 할당해서 사용하시면 됩니다만 안드로이드 서비스와 겹치지 않는 것으로 사용하셔야 합니다.)


root@u5pvr-debian:~# nano /etc/resilio-sync/config.json


{

    "storage_path" : "/var/lib/resilio-sync/",

    "pid_file" : "/var/run/resilio-sync/sync.pid",


    "webui" :

    {

        "listen" : "0.0.0.0:11111"     <-- 기본적으로 포트가 8888 이나 11111 로 지정함

    }

}



포트가 현재 사용중인지 아닌지 체크하는 방법입니다.


# 80번 포트가 사용중인지 체크하기

root@u5pvr-debian:~# netstat -nlp | grep 80

tcp        0      0 0.0.0.0:25807           0.0.0.0:*               LISTEN      2578/com.hisilicon.

tcp        0      0 0.0.0.0:25808           0.0.0.0:*               LISTEN      2578/com.hisilicon.

tcp        0      0 0.0.0.0:25809           0.0.0.0:*               LISTEN      2578/com.hisilicon.

tcp        0      0 0.0.0.0:8008            0.0.0.0:*               LISTEN      3233/com.google.and

tcp        0      0 0.0.0.0:25806           0.0.0.0:*               LISTEN      2578/com.hisilicon.

tcp6       0      0 127.0.0.1:58480         :::*                    LISTEN      18717/com.google.an

tcp6       0      0 :::8080                 :::*                    LISTEN      5042/java

tcp6       0      0 :::80                   :::*                    LISTEN      3726/apache2

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      5042/java

tcp6       0      0 :::8009                 :::*                    LISTEN      3233/com.google.and

unix  2      [ ACC ]     STREAM     LISTENING     16932    3480/daemonsu:10075 @eu.chainfire.supersu:10075


# 32400 포트가 사용중인지 체크하기

root@u5pvr-debian:~# netstat -nlp | grep 32400

tcp        0      0 0.0.0.0:32400           0.0.0.0:*               LISTEN      4851/Plex Media Ser


# 8080 포트가 사용중인지 체크하기

root@u5pvr-debian:~# netstat -nlp | grep 8080

tcp6       0      0 :::8080                 :::*                    LISTEN      5042/java


# 사용중이지 않은 경우 아무것도 출력되지 않습니다.

root@u5pvr-debian:~# netstat -nlp | grep 1234

root@u5pvr-debian:~#


데몬 실행 권한을 root 권한으로 실행하기 위해 아래의 설정을 진행합니다.


root@u5pvr-debian:~# nano /etc/init.d/resilio-sync


#!/bin/sh

### BEGIN INIT INFO

# Provides: resilio-sync

# Required-Start: $local_fs $remote_fs

# Required-Stop: $local_fs $remote_fs

# Should-Start: $network

# Should-Stop: $network

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: daemonized version of resilio-sync.

# Description: Starts the resilio-sync daemon.

### END INIT INFO



DAEMON=/usr/bin/rslsync

SYNC_USER=root    <-- root 로 수정합니다.

CONFIG=/etc/resilio-sync/config.json



. /lib/lsb/init-functions



wait_process()

{

    while kill -0 "$1" 2> /dev/null; do

        sleep 0.5

    done

}

    done
}


start()
{
    echo "Starting Resilio Sync"
    mkdir -p /var/run/resilio-sync
    chown -R $SYNC_USER:$SYNC_USER /var/run/resilio-sync
    start-stop-daemon --start --quiet -b -o -c $SYNC_USER -u $SYNC_USER --exec $DAEMON --umask 0000 -- --config $CONFIG
}

# umask 값을 0000 으로 설정합니다.

stop()
{
    start-stop-daemon --stop -o -c $SYNC_USER -K -u $SYNC_USER -x $DAEMON
    wait_process $(pidof $DAEMON)
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload|force-reload)
      stop
.....................


설정이 끝났음으로 resilio-sync 를 재시작 합니다.


root@u5pvr-debian:~# service resilio-sync restart

Starting Resilio Sync

root@u5pvr-debian:~# netstat -nlp | grep 11111

tcp        0      0 0.0.0.0:11111           0.0.0.0:*               LISTEN      4654/rslsync

root@u5pvr-debian:~#



2. 윕UI 접근 및 설정하기


접근은 http://U5PVR아이피:포트/ 로 하시면 됩니다. 저는 포트 번호를 11111 로 했습니다.


접근을 하게 되면 초기 접속이라 아이디 비밀번호를 설정하라는 창이 뜹니다. 설정을 해 줍니다.



친근한 이름을 지어줍니다. 



설정이 끝나면 설정된 아이디와 비밀번호로 로그인을 하시면 됩니다.



정상적으로 로그인이 되었습니다.



간단한 설정을 진행합니다.


우측 상단에 톱니바퀴를 누르면 설정창이 뜹니다.


기본적으로 보여줄 위치를 지정합니다. 저는 /mnt 로 지정을 하였습니다.




3. 동기화 사용하기


테스트로 아래의 폴더를 생성해 보겠습니다.


왼쪽 상단의 Add Folder 를 눌러 폴더를 추가합니다.



추가가 완료되면 아래와 같이 공유설정이 뜹니다.


퍼미션을 설정할 수 있으며 이메일이나 바로 복사가 가능합니다.


저는 복사를 해 보도록 하겠습니다.




복사한 주소를 웹에 붙여넣으면 싱크 프로그램을 다운받으라고 창이 뜹니다.


설치를 하고 아래와 같이 추가를 누르거나 혹은 프로그램에 직접적으로 등록하여 사용하시면 됩니다.


저는 직접적으로 등록해 보겠습니다.



키를 입력하고 동기화할 폴더를 지정합니다.



추가가 완료 되면 상대측에서 승인을 해줘야 합니다. 그래서 승인 대기중이라고 뜹니다.



다시 웹 UI 로 돌아와서 승인을 체크해 줍니다.



승인을 해 주고 폴더에 파일을 추가하게 되면 동기화가 일어납니다.



정상적으로 U5PVR 내부 지정한 디렉터리에 파일이 존재함을 알 수 있습니다.



피어목록에도 잘 뜹니다.




감사합니다.