Synology NAS는 확장성이 좋아 매력이 있다.

DS110j 를 사용하고 있는데 Java로 서버 프로그램을 만들어 서비스를 할 수도 있다.

(DS110j는 ARM칩을 사용하므로 

ejre-7-fcs-b147-linux-arm-sflt-headless-27_jun_2011.tar.tar 를 설치하면 된다.)


Synology 웹사이트에서 3rd Party Apps Integration 메뉴에 있는 메뉴얼을 보면

C로도 프로그램을 만들어 사용할 수가 있다.

Cross Compiler를 제공하는데 이것을 사용하면 된다.


Tool Chain이라고 하는 것인데 이것은 DS110j에 설치하는 것이 아니라 개발장비(리눅스)에 설치해야한다.

그래서 가상머신을 설치하고 우분투를 설치했다. (ubuntu-12.04-desktop-i386.iso)


(우분투에서는 root로 작업한다.)

메뉴얼에 있는 대로 우분투안에 Synology에서 받은 파일을 올리고 /usr/local에 푼다.

gcc421_glibc25_88f6281-GPL.gtz 파일이 아래쪽 폴더에 모두 풀린다. 

/usr/local/arm-none-linux-gnueabi


메뉴얼대로 sysinfo.c를 만들고 아래와 같이 해서 실행파일을 만든다.

# arm-none-linux-gnueabi-gcc sysinfo.c -o sysinfo


이제 FTP로 실행파일을 DS110j로 업로드하는데 Filezilla를 사용할 경우, 반드시 바이너리로 강제로 전송해주어야 한다.

그냥 전송하면 아스키로 하고, DS110j에서 실행시 segmentation fault를 발생한다.

Filezilla 때문에 한참을 고생했다. 알고보면 간단하지만 처음하려면 쉽지 않은 것 같다.

(아래 참고 http://www.friendlyarm.net/forum/topic/246)


실행이 잘되면 메모리 정보가 출력될 것이다.

이젠 좀 더 복잡한 프로그램을 시도해 봐야겠다.


참고 : http://cafe.naver.com/synologynas/4030


Synolocy 간 rsync를 이용 백업하는 방법입니다.

저는 108j와 110j를 가지고 있습니다.
110j가 성능이 108j보다 좋아 실서버로 사용중이고, 108j는 백업장비입니다.
110j (A) 에서 108j (B) 로 백업하는 것이죠.

108j가 자동으로 켜지는 기능이 되고 poweroff로 장비를 끄는 것이 가능하기 때문에
일정시간마다 자동으로 켜져 백업을 받고 꺼지는 것이 가능합니다.


1. A -> B 로 백업합니다.

2. B에 ssh를 사용하도록 관리자 페이지에서 설정합니다.

3. B에서 개인키/공용키를 생성합니다.
#ssh-keygen -t rsa
사용자 directory에 .ssh/id_rsa.pub가 생성됩니다.
이 파일을 A의 사용자 directory의 .ssh/authorized_keys라는 이름으로 복사해 놓습니다.

4. B에서 sshd_config 를 수정합니다.
/etc/ssh/sshd_config
(주석만 제거하면 됩니다.)

    Protocol                    2 

    HostKey /etc/ssh/ssh_host_rsa_key  

    ServerKeyBits                     1024

    PermitRootLogin                 yes

    RSAAuthentication                 yes
    PubkeyAuthentication                 yes
    AuthorizedKeysFile                .ssh/authorized_keys

    HostbasedAuthentication             no

    PasswordAuthentication                 no
    PermitEmptyPasswords                 no

    Subsystem    sftp    /usr/libexec/sftp-serve

ssh client 프로그램으로 B장비에 접속하려면 다음을 yes로 한다.

    PasswordAuthentication                 yes


5. B에서 ssh를 재시작한다. (관리자 페이지에서 정지/시작)

6. B에서 다음을 실행하면 A장비 /volume1/ 밑에 있는 모든 파일,디렉토리가  B장비 /volume1 로 옮겨진다.
   --delete 옵션을 주면 A에서 파일이 없어지면 B도 삭제되니 주의해야만 한다.

   rsync -avPzr --delete --stats -l -t -e ssh 사용자id@A의ip_address:/volume1/ /volume1

   ex) rsync -avPzr --delete --stats -l -t -e ssh root@192.168.1.100:/volume1/web/ /volume1/web
        /volume1/web에 있는 모든 파일, 디렉토리를 /volume1/web에 복사한다. (정확히 말하면 일치시킨다.)

7. 사용자 디렉토리에 backup.sh 작성

#!/bin/sh

rsync -avPzr --delete --stats -l -t -e ssh root@192.168.0.21:/volume1/web/ /volume1/web


8. ./backup.sh 을 실행하여 잘되는제 확인합니다.


9. /etc/crontab 을 수정하여 일정한 시간이 되면 backup.sh가 수행되도록 합니다.


10. backup.sh 끝에 poweroff를 넣으면 백업후 자동 종료까지 됩니다.


// OPTION //

-v : 진행 상황을 상세하게 보여줌 
-r : 지정한 디렉토리의 하위 디렉토리까지 재귀적으로 실행 
-l : 소프트 링크 보존 
-H : 하드 링크 보존 
-p : 버전 속성 보존 
-o : 소유 속성 보존(루트) 
-g : 그룹 속성 보존 
-t : 타임스탬프 보존 
-D : 디바이스 파일 보존(루트) 
-z : 데이터 압축 전송 
-b : 낡은 파일은 ~가 붙음 
-u : 추가된 파일만 전송 새 파일은 갱신하지 않음 
--existing : 추가된 파일은 전송하지 않고 갱신된 파일만 전송 
--delete : 서버에 없는 파일은 클라이언트에서도 삭제 
-a : 아카이브 모드. rlptgoD를 자동 지정 
-c : 서버와 클라이언트의 파일 크기를 세밀히 체크 
--stats : 결과를 보고 
-e ssh(rsh) : 전송 암호화 


1.다이나믹DNS업데이트 실행 스크립트를 만듭니다.

[root]# vi /usr/local/bin/ddns.sh
#!/bin/sh
/usr/bin/wget -O - --http-user=아이디 --http-passwd=인증코드 'http://dyna.dnsever.com/update.php?업데이트_인자값'


#!/bin/sh
/usr/syno/bin/wget -O - --http-user=dnseverid --http-passwd=dnsever에서제공하는인증코드 'http://dyna.dnsever.com/update.php?host[dns에등록한호스트명]'

2.
[root]# chmod +x /usr/local/bin/ddns.sh
로 하여, 스크립트에 실행권한을 부여합니다.

3. /etc/crontab 파일 편집하여,일정한 시간마다(예:매 5분) 다이나믹DNS 업데이트 스크립트 작동하도록 합니다.

[root]# vi /etc/crontab
*/5 * * * * root /usr/local/bin/ddns.sh > /dev/null 2>&1


4. /etc/rc.d/rc.local 파일에 다이나믹DNS 업데이트 스크립트 실행 라인을 추가하여, 시스템 시작시에 스크립트 실행되도록 합니다.
(리눅스배포판의 종류에 따라 시작스크립트 방식이 다릅니다. Ubuntu 리눅스의 경우 /etc/rc.local 을 사용합니다. Debian 리눅스의 경우 rc.local 파일을 사용하지 않습니다. 자세한 사항은 Debian 리눅스FAQ를 참조하십시오.)

[root]# vi /etc/rc.d/rc.local
/usr/local/bin/ddns.sh

+ Recent posts