10. 아이튠즈 서버 설치하기 [NAS 구축기][ubuntu 10.4]

얼렁뚱땅설명서 2012. 3. 5. 15:23


지금까지는 NAS의 가장 기본 기능을 끝냈다.
Samba 서버를 이용하여, 언제 어디서나 네트워크 드라이브로 설정할 수 있는 기능을 완성했으며,
덤으로 SSH나 FTP 서버도 설치했다. 
그럼 이제부터, 재미있는 기능들을 설치해 보도록 하자.

처음은 아이튠즈 서버다.  리눅스용 아이튠즈 서버는 firefly(or mt-daapd)가 있다.  apple의 DAAP(Digital Audio Access Protocol)를 구현한 것으로, PC의 아이튠즈나 아이폰, 안드로이드 등에서 사용할 수 있다.


root@Team4Svr:~# apt-get install dpkg-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
다음 패키지를 더 설치할 것입니다:
  build-essential g++ g++-4.4 libstdc++6-4.4-dev xz-utils
제안하는 패키지:
  debian-keyring debian-maintainers g++-multilib g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg
  libstdc++6-4.4-doc
다음 새 패키지를 설치할 것입니다:
  build-essential dpkg-dev g++ g++-4.4 libstdc++6-4.4-dev xz-utils
0개 업그레이드, 6개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
8,174k바이트 아카이브를 받아야 합니다.
이 작업 후 26.2M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]?
받기:1 http://ftp.daum.net/ubuntu/ lucid/main libstdc++6-4.4-dev 4.4.3-4ubuntu5 [1,522kB]
받기:2 http://ftp.daum.net/ubuntu/ lucid/main g++-4.4 4.4.3-4ubuntu5 [5,756kB]
받기:3 http://ftp.daum.net/ubuntu/ lucid/main g++ 4:4.4.3-1ubuntu1 [1,450B]
받기:4 http://ftp.daum.net/ubuntu/ lucid/main xz-utils 4.999.9beta+20091116-1 [233kB]
받기:5 http://ftp.daum.net/ubuntu/ lucid-updates/main dpkg-dev 1.15.5.6ubuntu4.5 [654kB]
받기:6 http://ftp.daum.net/ubuntu/ lucid/main build-essential 11.4build1 [7,278B]
내려받기 8,174k바이트, 소요시간 1초 (6,234k바이트/초)
전에 선택하지 않은 libstdc++6-4.4-dev 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 128781개의 파일과 디렉토리가 설치되어 있습니다.)
libstdc++6-4.4-dev 패키지를 푸는 중입니다 (.../libstdc++6-4.4-dev_4.4.3-4ubuntu5_amd64.deb에서) ...
전에 선택하지 않은 g++-4.4 패키지를 선택합니다.
g++-4.4 패키지를 푸는 중입니다 (.../g++-4.4_4.4.3-4ubuntu5_amd64.deb에서) ...
전에 선택하지 않은 g++ 패키지를 선택합니다.
g++ 패키지를 푸는 중입니다 (.../g++_4%3a4.4.3-1ubuntu1_amd64.deb에서) ...
전에 선택하지 않은 xz-utils 패키지를 선택합니다.
xz-utils 패키지를 푸는 중입니다 (.../xz-utils_4.999.9beta+20091116-1_amd64.deb에서) ...
전에 선택하지 않은 dpkg-dev 패키지를 선택합니다.
dpkg-dev 패키지를 푸는 중입니다 (.../dpkg-dev_1.15.5.6ubuntu4.5_all.deb에서) ...
전에 선택하지 않은 build-essential 패키지를 선택합니다.
build-essential 패키지를 푸는 중입니다 (.../build-essential_11.4build1_amd64.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
xz-utils (4.999.9beta+20091116-1) 설정하는 중입니다 ...
dpkg-dev (1.15.5.6ubuntu4.5) 설정하는 중입니다 ...
libstdc++6-4.4-dev (4.4.3-4ubuntu5) 설정하는 중입니다 ...
g++-4.4 (4.4.3-4ubuntu5) 설정하는 중입니다 ...
g++ (4:4.4.3-1ubuntu1) 설정하는 중입니다 ...
update-alternatives: /usr/bin/g++ 사용해서 자동 모드에서 /usr/bin/c++ (c++) 제공.

build-essential (11.4build1) 설정하는 중입니다 ...
root@Team4Svr:~# apt-get install avahi-daemon
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
avahi-daemon 패키지는 이미 최신 버전입니다.
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@Team4Svr:~# apt-get install libgdbm-dev libid3tag0-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
다음 패키지를 더 설치할 것입니다:
  libid3tag0 zlib1g-dev
다음 새 패키지를 설치할 것입니다:
  libgdbm-dev libid3tag0 libid3tag0-dev zlib1g-dev
0개 업그레이드, 4개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
287k바이트 아카이브를 받아야 합니다.
이 작업 후 950k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]?
받기:1 http://ftp.daum.net/ubuntu/ lucid/main libgdbm-dev 1.8.3-9 [38.4kB]
받기:2 http://ftp.daum.net/ubuntu/ lucid/main libid3tag0 0.15.1b-10build2 [39.6kB]
받기:3 http://ftp.daum.net/ubuntu/ lucid/main zlib1g-dev 1:1.2.3.3.dfsg-15ubuntu1 [167kB]
받기:4 http://ftp.daum.net/ubuntu/ lucid/main libid3tag0-dev 0.15.1b-10build2 [41.6kB]
내려받기 287k바이트, 소요시간 0초 (874k바이트/초)
전에 선택하지 않은 libgdbm-dev 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 129763개의 파일과 디렉토리가 설치되어 있습니다.)
libgdbm-dev 패키지를 푸는 중입니다 (.../libgdbm-dev_1.8.3-9_amd64.deb에서) ...
전에 선택하지 않은 libid3tag0 패키지를 선택합니다.
libid3tag0 패키지를 푸는 중입니다 (.../libid3tag0_0.15.1b-10build2_amd64.deb에서) ...
전에 선택하지 않은 zlib1g-dev 패키지를 선택합니다.
zlib1g-dev 패키지를 푸는 중입니다 (.../zlib1g-dev_1%3a1.2.3.3.dfsg-15ubuntu1_amd64.deb에서) ...
전에 선택하지 않은 libid3tag0-dev 패키지를 선택합니다.
libid3tag0-dev 패키지를 푸는 중입니다 (.../libid3tag0-dev_0.15.1b-10build2_amd64.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
libgdbm-dev (1.8.3-9) 설정하는 중입니다 ...
libid3tag0 (0.15.1b-10build2) 설정하는 중입니다 ...

zlib1g-dev (1:1.2.3.3.dfsg-15ubuntu1) 설정하는 중입니다 ...
libid3tag0-dev (0.15.1b-10build2) 설정하는 중입니다 ...
libc-bin에 대한 트리거를 처리하는 중입니다 ...
ldconfig deferred processing now taking place
root@Team4Svr:~# apt-get install libsqlite0
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
libsqlite0 패키지는 이미 최신 버전입니다.
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@Team4Svr:~# apt-get install libsqlite0-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
제안하는 패키지:
  sqlite-doc
다음 새 패키지를 설치할 것입니다:
  libsqlite0-dev
0개 업그레이드, 1개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
234k바이트 아카이브를 받아야 합니다.
이 작업 후 770k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://ftp.daum.net/ubuntu/ lucid/main libsqlite0-dev 2.8.17-6build2 [234kB]
내려받기 234k바이트, 소요시간 0초 (1,979k바이트/초)
전에 선택하지 않은 libsqlite0-dev 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 129857개의 파일과 디렉토리가 설치되어 있습니다.)
libsqlite0-dev 패키지를 푸는 중입니다 (.../libsqlite0-dev_2.8.17-6build2_amd64.deb에서) ...
libsqlite0-dev (2.8.17-6build2) 설정하는 중입니다 ...
root@Team4Svr:~# apt-get install gawk
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
gawk 패키지는 이미 최신 버전입니다.
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@Team4Svr:~#
root@Team4Svr:~# apt-get install gcc
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
gcc 패키지는 이미 최신 버전입니다.
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@Team4Svr:~# apt-get install mt-daapd
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
다음 패키지를 더 설치할 것입니다:
  javascript-common libavcodec52 libavformat52 libavutil49 libgsm1 libjs-prototype libjs-scriptaculous
  libschroedinger-1.0-0 libtagc0 wwwconfig-common
제안하는 패키지:
  apache2 httpd mysql-client postgresql-client apache apache-ssl
다음 새 패키지를 설치할 것입니다:
  javascript-common libavcodec52 libavformat52 libavutil49 libgsm1 libjs-prototype libjs-scriptaculous
  libschroedinger-1.0-0 libtagc0 mt-daapd wwwconfig-common
0개 업그레이드, 11개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
3,374k바이트 아카이브를 받아야 합니다.
이 작업 후 9,744k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]?
받기:1 http://ftp.daum.net/ubuntu/ lucid/universe wwwconfig-common 0.2.1 [22.8kB]
받기:2 http://ftp.daum.net/ubuntu/ lucid/universe javascript-common 7 [3,854B]
받기:3 http://ftp.daum.net/ubuntu/ lucid-updates/main libavutil49 4:0.5.1-1ubuntu1.3 [65.8kB]
받기:4 http://ftp.daum.net/ubuntu/ lucid/main libgsm1 1.0.13-3 [29.3kB]
받기:5 http://ftp.daum.net/ubuntu/ lucid/main libschroedinger-1.0-0 1.0.9.is.1.0.8-0ubuntu1 [213kB]
받기:6 http://ftp.daum.net/ubuntu/ lucid-updates/main libavcodec52 4:0.5.1-1ubuntu1.3 [2,207kB]
받기:7 http://ftp.daum.net/ubuntu/ lucid-updates/main libavformat52 4:0.5.1-1ubuntu1.3 [372kB]
받기:8 http://ftp.daum.net/ubuntu/ lucid/universe libjs-prototype 1.6.1-1 [34.9kB]
받기:9 http://ftp.daum.net/ubuntu/ lucid/universe libjs-scriptaculous 1.8.3-1 [127kB]
받기:10 http://ftp.daum.net/ubuntu/ lucid-updates/main libtagc0 1.6.3-0ubuntu1 [14.3kB]
받기:11 http://ftp.daum.net/ubuntu/ lucid/universe mt-daapd 0.9~r1696.dfsg-15build1 [284kB]
내려받기 3,374k바이트, 소요시간 1초 (2,525k바이트/초)
전에 선택하지 않은 wwwconfig-common 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 129866개의 파일과 디렉토리가 설치되어 있습니다.)
wwwconfig-common 패키지를 푸는 중입니다 (.../wwwconfig-common_0.2.1_all.deb에서) ...
전에 선택하지 않은 javascript-common 패키지를 선택합니다.
javascript-common 패키지를 푸는 중입니다 (.../javascript-common_7_all.deb에서) ...
전에 선택하지 않은 libavutil49 패키지를 선택합니다.
libavutil49 패키지를 푸는 중입니다 (.../libavutil49_4%3a0.5.1-1ubuntu1.3_amd64.deb에서) ...
전에 선택하지 않은 libgsm1 패키지를 선택합니다.
libgsm1 패키지를 푸는 중입니다 (.../libgsm1_1.0.13-3_amd64.deb에서) ...
전에 선택하지 않은 libschroedinger-1.0-0 패키지를 선택합니다.
libschroedinger-1.0-0 패키지를 푸는 중입니다 (.../libschroedinger-1.0-0_1.0.9.is.1.0.8-0ubuntu1_amd64.deb에서) ...
전에 선택하지 않은 libavcodec52 패키지를 선택합니다.
libavcodec52 패키지를 푸는 중입니다 (.../libavcodec52_4%3a0.5.1-1ubuntu1.3_amd64.deb에서) ...
전에 선택하지 않은 libavformat52 패키지를 선택합니다.
libavformat52 패키지를 푸는 중입니다 (.../libavformat52_4%3a0.5.1-1ubuntu1.3_amd64.deb에서) ...
전에 선택하지 않은 libjs-prototype 패키지를 선택합니다.
libjs-prototype 패키지를 푸는 중입니다 (.../libjs-prototype_1.6.1-1_all.deb에서) ...
전에 선택하지 않은 libjs-scriptaculous 패키지를 선택합니다.
libjs-scriptaculous 패키지를 푸는 중입니다 (.../libjs-scriptaculous_1.8.3-1_all.deb에서) ...
전에 선택하지 않은 libtagc0 패키지를 선택합니다.
libtagc0 패키지를 푸는 중입니다 (.../libtagc0_1.6.3-0ubuntu1_amd64.deb에서) ...
전에 선택하지 않은 mt-daapd 패키지를 선택합니다.
mt-daapd 패키지를 푸는 중입니다 (.../mt-daapd_0.9~r1696.dfsg-15build1_amd64.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
ureadahead에 대한 트리거를 처리하는 중입니다 ...
ureadahead will be reprofiled on next reboot
wwwconfig-common (0.2.1) 설정하는 중입니다 ...
javascript-common (7) 설정하는 중입니다 ...

libavutil49 (4:0.5.1-1ubuntu1.3) 설정하는 중입니다 ...

libgsm1 (1.0.13-3) 설정하는 중입니다 ...

libschroedinger-1.0-0 (1.0.9.is.1.0.8-0ubuntu1) 설정하는 중입니다 ...

libavcodec52 (4:0.5.1-1ubuntu1.3) 설정하는 중입니다 ...

libavformat52 (4:0.5.1-1ubuntu1.3) 설정하는 중입니다 ...

libjs-prototype (1.6.1-1) 설정하는 중입니다 ...
libjs-scriptaculous (1.8.3-1) 설정하는 중입니다 ...
libtagc0 (1.6.3-0ubuntu1) 설정하는 중입니다 ...

mt-daapd (0.9~r1696.dfsg-15build1) 설정하는 중입니다 ...
Starting mt-daapd: mt-daapd.

libc-bin에 대한 트리거를 처리하는 중입니다 ...
ldconfig deferred processing now taking place
root@Team4Svr:~#
root@Team4Svr:~# service mt-daapd stop
Stopping mt-daapd: mt-daapd.
Waiting for mt-daapd to terminate.....OK, all clear.

root@Team4Svr:~# vi /etc/mt-daapd.conf

...
...
#
# admin_pw (required)
#
# This is the password to the administrative pages
#

admin_pw = input password
...
...
#
# mp3_dir (required)
#
# Location of the mp3 files to share.  Note that because the
# files are stored in the database by inode, these must be
# in the same physical filesystem.
#

mp3_dir = /DataCenter/Music
...
...

root@Team4Svr:~# service mt-daapd start


이렇게 하면 아이튠즈에서 아이튠즈 서버가 보인다.  
그러나, 한참을 기다려도 음악파일 목록 따위는 보이지 않고, 뺑글뺑글 돌아가는 서버이름만.....ㅡ.ㅜ
아이튠즈 10.5 이상은 패치를 해야만 한다.



패치 방법은 아래와 같다. 
이번엔 길어서 패치과정을 뺐다.

root@Team4Svr:~# service mt-daapd stop
root@Team4Svr:~# aptitude install gpa devscripts debhelper dpatch libflac-dev libvorbis-dev libmpcdec-dev libavcodec-dev libavformat-dev libid3tag0-dev libtagc0-dev libavahi-client-dev libsqlite3-dev libjs-prototype libjs-scriptaculous avahi-daemon autotools-dev
....
....
root@Team4Svr:~# mkdir ~/mt-daapd
root@Team4Svr:~# cd ~/mt-daapd
root@Team4Svr:~# apt-get source mt-daapd
...
...
...

root@Team4Svr:~# cd ~/mt-daapd/mt-daapd-0.9~r1696.dfsg/debian/patches/
root@Team4Svr:~# wget http://www.zero-factorial.com/coding/21_itunes10.5.dpatch
root@Team4Svr:~# echo 21_itunes10.5.dpatch >> 00list
root@Team4Svr:~# cd ../..
root@Team4Svr:~# dch -i "Fix for iTunes 10"
root@Team4Svr:~# debuild -us -uc
...
...
...
root@Team4Svr:~# cd ../../..
root@Team4Svr:~# sudo dpkg -i mt-daapd_0.9~r1696.dfsg-15build2_amd64.deb
...
...
root@Team4Svr:~# service mt-daapd start

 

위와 같이 작업하면 일단 아이튠즈에서 서버가 떠있는 것은 확인할 수 있다. 아이튠즈 서버 관리는 웹브라우저를 통해서도 가능하다.
아이피 주소와 포트번호만 넣어주면 된다. 본인의 경우는 http://192.168.10.5:3689 로 입력하였다. 
 그러면 아래와 같은 화면을 볼 수 있을 것이다. 
사용자 이름은 admin 비밀번호는  mt-daapd.conf 에서 입력한 패스워드를 입력하면 된다.


일단, configuration 항목에 가서 Music Folder의 위치를 입력한다.
여기까지만해도 아이튠즈에서 음악파일 목록을 확인할 수 있을 것이다.


Smart playlists로 음악파일의 목록을 만들어주면, 좀더 심플한 목록을 볼 수 있지만..
이 작업은 노가다가 심하다는 단점이 있다. ㅡㅡ;;
나중에 이것을 어떻게 간단하게 만들어 줄수 있는지 연구(?)해 볼 참이다.



위의 작업이 끝났으면 아래와 같이 아이튠즈에서도, iPhone에서도, 안드로이드에서도 우리의 홈서버가 보유하고 있는 모든 음악을 서비스 받을 수 있다. 



 




09. NTFS 마운트 하기 또는 cp를 이용한 데이터 백업 [NAS 구축기][ubuntu 10.4]

얼렁뚱땅설명서 2012. 3. 1. 22:57

NAS에 대한 고민은 그동안 날려먹은 수 많은 하드디스크의 데이터 때문이었다.
수 많은 밤을 꼴딱새고, 멍한 정신 상태에서 파티션을 날려먹거나 포맷을 한다거나,
삭제 버튼을 눌러버리는 일은 참으로 흔하고 소소한 일들이었다. 시간도 얼마 걸리지 않는다.
그러고 나면, 그 멍한 정신상태에서 다시 복구를 위한 작업에 착수한다.
FinalData 라든가 LiveData라는 결코 가까지 하고 싶지 않은 프로그램을 설치하고 
수 많은 시간들을 기다려야 했다.
그러고 나면, 살리는 데이터 반, 날리는 데이터 반이였다.
아~씨바, 다시는 이런 일로 밤새우지 않으리라... 다짐 했건만...ㅡ.ㅜ


하여간, SSH를 이용한 원격드라이브의 설정까지 무사히 끝냈다면, 
이젠 하드디스크를 하나둘씩 추가하여 용량을 늘일 차례이다.
추가되는 하드디스크는 마운트를 해서 사용한다. 
기본 적인 마운트/언 마운트 명령은 아래의 명령을 이용해서 작업한다.

root@homesvr:/# mount -t ext4 /dev/sde1 /mnt

명령은 mount -t [파일시스템유형] [마운트할장치] [마운트할디렉토리] 로 구성된다.
언 마운트는 좀더 간단하다. 
명령 구성은 umount [마운트한디렉토리] 이다.

root@homesvr:/# umount /mnt


윈도우에서 사용하는 파일시스템 유형은 NTFS이다. 
NTFS를 읽기/쓰기가 가능하도록 마운트하기 위해서는 약간의 수고로움이 있다.
즉, 프로그램 하나를 설치 해야 한다.

root@homesvr:/# apt-get install ntfs-3g
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
ntfs-3g 패키지는 이미 최신 버전입니다.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@homesvr:/# (이미 설치 했다는 군요.)
root@homesvr:/# mount -t ntfs-3g /dev/sde1 /mnt


지금까지는 마운트할 하드디스크가 이미 포맷되어 있다는 가정으로 한것이다.
그러나, 처음 하드디스크를 구입할 때는 포맷이 되어 있지 않다.
하드디스크의 포맷은 아래의 그림처럼 GParted를 사용하면 간단히 끝낼 수 있다.
 



마운트 명령을 이용해서 마운트한 하드디스크는 시스템이 리붓되면, 마운트가 되지 않은 상태로 올라온다.
이것을 방지하기 위해서는 /etc/fstab 등록해 주면 된다. 아래는 본인의 서버에 설정된 fstab 이다.
add Disk 라인 위는 시스템이 알아서 설정한 부분이며, 아래의 붉은 줄은 본인이 입력해서 넣은 것이다.

UUID 대신 마운트할 때처럼 /dev/sde1 과 같이 입력해도 마운트가 되는 것으로 안다.
그러나 권장사항이 UUID를 사용하는 것 같다. 맨 아래의 NTFS 하드디스크를 마운트한 것이다.

root@homesvr:/# vi /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda1 during installation
UUID=e544659b-d683-4e82-a2c3-8b582d1257da /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=037ff56d-08ba-4abb-a555-7ed9a68bdb91 none            swap    sw              0       0

############# add Disk #############
## /dev/sdb1
UUID=acb938e8-36ae-4cd1-b1c1-49661d5d1a45 /DataCenter               ext4    errors=remount-ro 0       1
## /dev/sdc1
UUID=5bd2619a-f0e7-4d74-bb43-baf2f5054acc /DutyDisk               ext4    errors=remount-ro 0       1
## /dev/sdd1
UUID=f6804a34-4094-480d-9fa9-186bdabe0e25 /BackupDisk               ext4    defaults   0       2
## /dev/sde1
UUID=E0C62960C62937E4  /NtfsBackup     ntfs-3g defaults,locale=ko_KR.UTF-8     0       0 


UUID는 아래의 명령으로 확인할 수 있다.
 

root@HomeSvr:~# ls -l /dev/disk/by-uuid/
합계 0
lrwxrwxrwx 1 root root 10 2011-11-10 01:06 037ff56d-08ba-4abb-a555-7ed9a68bdb91 -> ../../sda5
lrwxrwxrwx 1 root root 10 2011-11-10 01:06 4a1bf1a9-e9d0-472d-9878-3a98692d3adf -> ../../sda1
lrwxrwxrwx 1 root root 10 2011-11-10 01:06 9fa8485a-dae0-4e50-85be-e5181d37af15 -> ../../sdc1
lrwxrwxrwx 1 root root 10 2011-11-10 01:06 E0C62960C62937E4 -> ../../sde1
lrwxrwxrwx 1 root root 10 2011-11-10 01:06 acb938e8-36ae-4cd1-b1c1-49661d5d1a45 -> ../../sdb1

또는 ....

root@HomeSvr:/# blkid
/dev/ramzswap0: TYPE="swap"
/dev/sdc1: UUID="9fa8485a-dae0-4e50-85be-e5181d37af15" SEC_TYPE="ext2" TYPE="ext3"
/dev/sdb1: LABEL="DataCenter" UUID="acb938e8-36ae-4cd1-b1c1-49661d5d1a45" TYPE="ext4"
/dev/sdd1: LABEL="BackUp" UUID="f6804a34-4094-480d-9fa9-186bdabe0e25" TYPE="ext4"
/dev/sda1: UUID="4a1bf1a9-e9d0-472d-9878-3a98692d3adf" TYPE="ext4"
/dev/sda5: UUID="037ff56d-08ba-4abb-a555-7ed9a68bdb91" TYPE="swap"
/dev/sde1: LABEL="Linux4Windows" UUID="E0C62960C62937E4" TYPE="ntfs"



마지막으로 백업에 대해서 이야기 하겠다. 나의 경우는 콜드 백업을 선호한다. 즉, 복사본을 따로 만들어 두는 것을 선호한다.
레이드의 경우, 한계가 많기 때문에 사용하지 않는다. 일단은 나와 같이 저렴한 비용으로 서버를 구축하고자 하면, 메인보드에 내장된 레이드 컨트롤러를 사용하는 것일 일반적인데 2T~3T를 넘어가면 레이드가 깨진다고 한다. 그리고, 정말 중요한 것은 사람이 손으로 삭제한 것은 레이드 따위가 막아줄 수 있는 것이 아니다. 그건 정말 지워진거다. ㅡㅡ^

그래서 나의 경우는 그냥 그때 그때 복사하는 방법을 선호한다. 그것도 중요한 데이터만...
리눅스의 cp 명령은 생각보다 많은 기능들을 제공해준다. 예를 들어 복사 대상파일이 이미 있는 경우 파일 사이즈나 업데이트 시간이 달라야 복사한다거나 중복될 경우 백업본을 자동으로 만들어준다거나 하는 기능이 있다.
그러나 나의 경우는 자동으로 백업본을 만드는 일따위는 안하며, 같은 파일을 다시 복사하는 일만 안하도록 한다. 심플하게!


아래는 백업을 위한 스크립트다. 간단히 설명하면,

1) 서버의 시간을 맞춘다.
2) /dev/sdd1을 /BackupDisk 라는 폴더에 마운트 한다.
3) 원하는 데이터를 복사한다. 복사 옵션에 -Ru를 붙여서, 복사한 파일을 다시 복사하는 일은 없도록 한다.
4) 복사가 끝나면  /dev/sdd1 의 마운트를 해제 한다.
5) NTFS로 포맷된 디스크가 한번더 2~4의 작업을 반복한다.
6) 백업완료 시간을 화면에 출력한다.

mount와 umount를 반복하는 이유는 누군가 루트에서 [rm -rf * ]를 실행하는 천인공노할 일로 부터 보호하기 위해서다.
이런 일이 없을 것 같지만... 사실 빈번하게 일어난다. 난 아직 루트에서는 해본적 없다. ^^;

root@homesvr:~# mkdir /root/MgrScript
root@homesvr:~# vi /root/MgrScript/backup.sh
#/bin/sh

## 일단 시간을 맞춘다.
/usr/bin/rdate -s time.bora.net

mount -t ext4 /dev/sdd1 /BackupDisk
cp -Ru /DataCenter/* /BackupDisk/DataCenter
cp -Ru /home/* /BackupDisk/home
umount /BackupDisk

ntfs-3g /dev/sde1 /NtfsBackup -o locale=ko_KR.UTF-8
cp -Ru /DataCenter/* /NtfsBackup/DataCenter
cp -Ru /home/* /NtfsBackup/home
umount /NtfsBackup 

echo `date -d today` -end backup



그러나, 이 백업 스크립트를 틈나는 대로 돌릴 수는 없는 일이다.
이걸 cron에 등록하여 때마다 알아서 수행하도록 해준다.
난 이것을 매일 새벽 두시에 수행될 수 있도록 했다.

# export EDITOR=vi
# crontab -e
# m h  dom mon dow   command
0 2 * * * /root/MgrScript/backup.sh >> /root/MgrScript/backup.log  <-- 입력

root@homesvr:~# cd /var/spool/cron/crontabs/
root@homesvr:/var/spool/cron/crontabs# cat root <--- 등록된 것을 확인할 수 있다.
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.ITyvFs/crontab installed on Thu Mar  1 22:53:39 2012)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# m h  dom mon dow   command
0 2 * * * /root/MgrScript/backup.sh >> /root/MgrScript/backup.log
root@homesvr:/var/spool/cron/crontabs# 


끝.