Synology의 NAS 는 X86, PPC, Arm 등 다양한 CPU를 사용한 제품이 있다. 그 중 ARM 기반의 DS110j 를 갖고 놀게 되었다.
카페도 있다.
http://cafe.naver.com/synologynas
대충 설치를 마치고 접속해보니 이것이야말로 신세경. 진작 써볼 껄...
일단 SSH 접속부터 설정.
부트스트랩을 올리는 방법이라는데 후덜덜하군.
DS110j 의 CPU 정보는 여기서 확인. 독일어이므로 영어로 바꿔보자.
여기에 나와있는 링크를 NAS의 Public 에 저장.
http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh
SSH로 접속해서 /volume1/public 으로 이동 후 과감하게 실행해보자. ipkg 사용가능. 우햐~~ 뭐 이런~~
(루트권한 필요. su 또는 아예 root로 접속해 처리할 것)
업데이트/업그레이드 실행.
몇년이 지나도 vi 는 익숙해지지 않는다. 발전이 없구먼... 암튼 nano 부터 깔아보자.
히야~ nano 가 떴다~~
데몬 스크립트들은 /usr/syno/etc/rc.d 에 위치한다. 루트디렉토리에 etc, etc.defaults 가 별개로 있는 이유는 잘 모르겠네.
로컬 네트웍상의 익명 rsync 서버로서 가지고 놀아보기.
현 시점에서 /etc/rsyncd.conf 파일은 다음과 같이 되어있다.
#motd file = /etc/rsyncd.motd
#log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
use chroot = no
[NetBackup]
path = /var/services/NetBackup
comment = Network Backup Share
uid = root
gid = root
read only = no
list = yes
charset = utf-8
auth users = root
secrets file = /etc/rsyncd.secrets
여기에 설정된 NetBackup 이 제대로 동작하는지 테스트 해 보자.
C:\SyncWork-Test> rsync -avz --delete root@zh-storage::NetBackup
rsync: failed to connect to zh-storage: Connection refused (111)
rsync error: error in socket IO (code 10) at /home/lapo/packaging/rsync-3.0.7-1
src/rsync-3.0.7/clientserver.c(122) [Receiver=3.0.7]
rsync 데몬이 돌고있지 않은 상태이므로 일반 접속으로는 붙지 않는다.
RSH 접속은 어떨까.
C:\SyncWork-Test> rsync -avz --delete root@zh-storage:~/
root@zh-storage's password:
receiving incremental file list
drwxr-xr-x 4096 2010/11/02 17:18:18 .
-rw-r--r-- 22 2010/11/02 17:18:18 .bashrc
-rw-r--r-- 40 2010/11/02 17:17:21 .inputrc
-rw-r--r-- 396 2003/09/04 18:49:39 .profile
sent 11 bytes received 85 bytes 21.33 bytes/sec
total size is 458 speedup is 4.77
아주 잘 동작하는군... 현재 설정된 rsh 에서 대상의 rsync 를 구동시키기 때문이다.
그리고 쩝... 현 시점에서 /var/services/ 에 NetBackup 이라는 디렉토리는 존재하지 않는다. 카페의 사용기를 보면 네트웍 백업을 활성화하면 나타나는 듯 한데... 이 펌웨어에는 그런 메뉴가 없다.
NAS로 들어가서 rsync 데몬을 굴려보자.
일단 /volume1/public/rsync-test 디렉토리를 만들고 /etc/rsyncd.conf 를 rsyncd.my.conf 로 복사. 내용을 다음과 같이 편집하자.
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
use chroot = no
[rsync-test]
path = /volume1/public/rsync-test
comment = rsync test directory
read only = no
list = yes
charset = utf-8
이제 rsync 를 데몬모드로 구동.
rsync --config=/etc/rsyncd.my.conf --daemon
데몬이 도는지도 확인해보자.
$ ps | grep rsync
30870 root 8000 S rsync --config=/etc/rsyncd.my.conf --daemon
30980 root 2944 S grep rsync
$ cat /var/run/rsyncd.pid
30870
앞에서 내렸던 명령을 다시 한 번 때려보자. 익명모드로 만들었으므로 유저없이 접근 가능.
C:\SyncWork-Test>rsync -avz --delete zh-storage::rsync-test
receiving incremental file list
drwxrwxrwx 4096 2010/11/02 17:55:13 .
sent 32 bytes received 68 bytes 66.67 bytes/sec
total size is 0 speedup is 0.00
잘 되는군. 위에서 read only = no 로 설정했으므로 보내기도 가능하다.
C:\SyncWork-Test>rsync -avz --delete ./ zh-storage::rsync-test
sending incremental file list
./
rsync: failed to set times on "." (in rsync-test): Operation not permitted (1)
aaa.bmp
aaa.png
curl_stack.h
curl_stack.o
main.o
sent 151433 bytes received 106 bytes 303078.00 bytes/sec
total size is 1513787 speedup is 9.99
rsync error: some files/attrs were not transferred (see previous errors) (code
3) at /home/lapo/packaging/rsync-3.0.7-1/src/rsync-3.0.7/main.c(1042) [sender=3
0.7]
문제는 이 명령어를 NAS 로그인과 동시에 실행시키는 건데... rc.d 는 /usr/syno/etc 에 있고 rc.local 은 /etc 에 존재...
일단 /etc/rc.local 에 다음과 같이 추가하고 재부팅 해 보자.
#rsync daemon
rsync --config=/etc/rsyncd.my.conf --daemon
(루트계정으로 로그온한 상태에서는 poweroff, reboot 명령이 먹는다.)
재부팅한 뒤 ps | grep rsync 때려보면 데몬이 잘 돌아가고 있는 게 보인다. 일단 해결.
--------
2010.11.3
도움말을 읽다보니 이렇게 데몬을 띄우지 않아도 활성화되는 rsync 모듈이 이미 있는 듯 하다.
/usr/syno/etc/rc.d/S84rsyncd.sh 이 그 물건이겠지.
일단 위에서 띄운 데몬을 죽이고 관리화면에서 백업및 복원 -> 네트워크 백업서비스 활성화 를 켜보자.
zh-storage> ps | grep rsync
22587 root 8000 S /usr/syno/bin/rsync --daemon
22890 root 2944 S grep rsync
rsync 데몬이 구동중이고, 이 설정파일은 위에서 살펴봤던 /etc/rsyncd.conf 를 사용할 것으로 보인다.
이 서버스는 동종의 Synology 머신에서 백업을 때릴 때 받아주는 역할을 하므로, 자유도가 떨어진다.
좀 더 살펴봐야겠지만, 나하고는 안어울림.
한걸음만 더 나가보자... crond 를 써서 원격지에서 주어진 시간마다 특정 폴더를 자동으로 rsync로 동기화하는 것도 테스트.
일단 rsync 와 달리 crond 는 기본적으로 떠있는 상태. 다행 다행~~
위에서 살펴본 것 처럼 /etc/rc.local 이 제대로 동작하므로 /etc/crontab 도 잘 동작할 것으로 보인다.
WebDAV 설정법 참고
http://isulnara.com/tt/202
Bootstrap 과 coreutils 가 먼저 설치되어있어야 한다. 설치 후 bash 깔 것.
# ipkg install coreutils
/etc/passwd 에서 root의 셸을 bash로 변경
root:x:0:0:root:/root:/opt/bin/bash
설정파일 링크.
# ln -s /opt/etc/profile /root/.bash_profile
# ln -s /opt/etc/profile /root/.bashrc
/opt/etc/profile
수정 - 필요에 따라 적당히 수정
#
# Bash initialization script
#
PS1='[\u@\h:\w]# '
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/bin:/usr/syno/sbin:/opt/sbin:/opt/bin
LD_LIBRARY_PATH=/opt/lib:${LD_LIBRARY_PATH}
export PS1 PATH LD_LIBRARY_PATH
MANPATH=/opt/man:${MANPATH}
if [ `/usr/bin/id -u` -eq 0 ]; then
HOME=/root
else
HOME=/volume1/`/usr/bin/id -n -u`
fi
EDITOR=vim
PAGER=less
TERM=linux
TERMINFO=/opt/lib/terminfo
MANPAGER='less -isrR'
RSYNC_RSH=ssh
export PATH OUTPUT_CHARSET MANPATH HOME EDITOR PAGER TERM MANPAGER RSYNC_RSH TERMINFO
alias ll='ls -la --color=auto'
그리고 접속확인. 무엇보다 중요한 것은 현재 작업중인 연결을 끊지 말고 새 연결을 시도할 것.
잘못되면 완전 초기화해야 할 수도 있기 때문임.
2011.3.30. SVN 설정하기.
http://forum.synology.com/wiki/index.php/Step-by-step_guide_to_installing_Subversion
먼저 제어판에서 snvowner 라는 유저를 생성하자. 어드민권한도 줌.
svn 폴더를 만들고 네트웍에서 감춤. svnowner 에 접근권한도 줌.
SSH접속후 다음과 같이 입력해 설치.
ipkg install svn
위 글에서는 SVN 데몬을 상시로 띄우는 것 보다는 inetd 를 써서 필요할 때만 쓰는 방법을 추천하고 있다.
/etc/inetd.conf 파일에 다음 라인 추가.
svn stream tcp nowait svnowner /opt/bin/svnserve svnserve -i -r /volume1/svn
/etc/services 파일에 다음 라인 추가.
svn 3690/tcp # Subversion
svn 3690/udp # Subversion
이 시점에서
reboot 한 번 해줌.
root로 SSH접속 후 다음과 svnowner 로 변경.
su svnowner --> 잘 안되네...
/etc/passwd 에서 로그인용 셸을 지정해주어야 한다.
svnowner:x:1026:100:SVN 관리자:/var/services/homes/svnowner:/sbin/nologin
다시 su svnowner
SVN을 테스트 해보자.
cd /volume1/svn
svnadmin create test
권한설정을 테스트 해보자.
/volume1/svn/test/conf/passwd 파일을 열고 다음과 같이 입력.
/volume1/svn/test/conf/svnserve.conf 파일에 다음과 같이 구성.
[general]
anon-access = none
auth-access = write
password-db = passwd
realm = I am your test repository
exit 를 입력, root 로 돌아온다.
이제 거북이 등 SVN 클라에서 위에 설정한 유저로 체크아웃.
svn co svn://<IP of your Diskstation>/test <some localfolder>
로컬에서 테스트하려면 이렇게.
svn co svn://127.0.0.1/test test
root의 암호를 물을 때는 그냥 엔터. 이후 유저와 암호를 위에서 설정한 값으로 입력.
체크아웃된 test 디렉토리로 이동후 다음과 같이 해보세.
echo "I am a Test" > test.txt
svn add test.txt
svn ci -m "Commit test"
커밋 잘된다. 거북이에서도 요령은 동일.
2011.5.4 추가.
pre--revprop-change 라는게 있군. 이걸 설정해줘야 거북이 SVN에서 지난로그 수정하는게 된다.
http://www.pyrasis.com/main/SubversionCommitMail-HOWTO
SVN 작업디렉토리 내 hook 디렉토리에 가서 다음과 같이 하자.
cp pre-revprop-change.tmpl pre-revprop-change
chmod 755 pre-revprop-change
2011.3.31. 모니위키 이전을 위한 설정.
아파치 설정파일은 /usr/syno/apache/conf 에 존재. httpd.conf 들여다봄.
도큐멘트 루트는 다음과 같이 되어있다.
DocumentRoot "/var/services/web"
이 디렉토리는 /volume1/web 으로 심볼릭 링크되어있음.
웹 디렉토리 밑에 주렁주렁 깔아주는 것 보다 다른 곳에서 링크하는 게 나아보임. /volume1/@hideweb/moniwiki 디렉토리 생성.
웹서비스 재시작시 httpd.conf 는 원래대로 돌아가버리니 httpd.conf-user 파일을 편집.
<IfModule alias_module>
# Alias for MoniWiki
Alias /MoniWiki/ "/volume1/@hideweb/moniwiki/"
Alias /MoniWiki "/volume1/@hideweb/moniwiki/"
<Directory "/volume1/@hideweb/moniwiki">
#Options Indexes MultiViews
#Options MultiViews
Options All
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</IfModule>
시놀로지 관리자에서 서비스 재구동시켜봄. 잘 동작한다. 아싸~
여기에 모니위키를 설치하면 됨.
2012. 3. 27.
SVN의 오래된 내용 정리하는 방법. 종택형님이 갈쳐줌.