'Debian chroot'에 해당되는 글 1건

  1. 2016.12.05 Synology NAS에 EBS 라디오 어학방송 녹음하기 2016년판 49
2016. 12. 5. 10:31

Synology NAS에 EBS 라디오 어학방송 녹음하기 2016년판

이 방법은 현재 DSM 6.1 이상의 OS를 사용하는 Synology NAS에는 적용할 수 없습니다. 현재 가능한 방법이 궁금하시면 ☞Synology NAS에 EBS 라디오 어학방송 녹음하기 2022년판 글☜을 참고하시기 바랍니다.

강대국들 틈바구니에 끼어있는 한국 사람들에게 외국어란 평생 따라다니는 숙제 같은 것이죠.
독해, 문법은 한국의 주입식 교육으로도 그나마 좀 커버되는 편이지만...
말하기 듣기는 교습방법의 문제와 인도유럽어와는 전혀 다른 한국어의 특성이 맞물려서, 몇십년을 배워도 여전히 갈 길이 머네요.
말하기와 듣기 공부 삽질을 그나마 조금이라도 효율적으로 하려면 잘 만들어진 시청각 교재와 강의가 필수적인데,
몇몇 Podcast들도 다운 받아 들어보고, 몇몇 인강도 둘러본 결과, 역시 EBS 교육방송만큼 좋은 강의를 찾기 힘들더군요.

EBS 라디오 어학강좌 프로그램들은 대부분 20분 단위로 편성되어 있고, 월요일부터 토요일까지 매일 방송하는데요.
그 중에서도 특히 오전 7시에 방송되는 '입이 트이는 영어' 강추합니다.
전국의 지하철 안내방송 성우를 담당하시는 Jennifer Clyde 씨가 진행하시는데,
지하철 자주 타고 다니시는 분이라면 친숙할 낭랑한 목소리가 귀에 쏙쏙 들어오고 내용도 참 알차답니다.

그런데 본방송은 무료지만 다시듣기는 유료(한 프로그램 당 매달 5천원 또는 모든 어학강좌 매달 2만원)라서,
본방을 놓쳤거나 복습을 위해 다시 들으려면 꽤나 부담됩니다.
어학은 반복학습(과 피드백이지만 피드백은 애초에 불가능하니...)이 생명인데 말이죠.

본방을 듣는 것도 스마트폰에서 스트리밍으로 들으면 20분짜리 방송 하나 당 20MB 정도의 모바일 데이터를 쓰게 되는데요.
무제한요금제 쓰시는 분께는 아무것도 아니겠지만 그렇지 않은 분들께는 매일 듣기 부담스러울 수 있는 양입니다.
한국에서 파는 스마트폰은 FM 라디오 수신기가 들어있음에도 불구하고(WiFi, 블루투스, FM이 한 칩에 들어있습니다)
FM 라디오 기능을 막아놔서 라디오 방송을 라디오로 못 듣고 인터넷 스트리밍으로 들어야만 하는 뭔가 이상한 상황입니다.

그래서 해결책을 찾아 헤매던 중에 방송 스트리밍 데이터를 녹음할 수 있는 방법들을 찾았고,
그 중에서도 제가 쓰는 Synology NAS를 이용해서 자동 녹음이 가능하다고 하는 방법들까지 발견했습니다.

제가 참고한 방법들은 다음 4가지 링크였는데요.


어디까지나 참고만 했을 뿐, 링크 글들을 그대로 따라하려니 여러 군데서 막히더군요.
일단 2016년말 현재 제 NAS의 OS(DSM 6.0)와 Debian chroot 버전에서는 잘 안 동작하는 명령들이 몇 가지 있고요.
링크들을 살펴보면 최초에 포고플러그용 녹음방식을 만든 분이 있었고, 그걸 Synology NAS에 끌어다 맞췄다는 내력을 알 수 있습니다.
그래서 그런지 덕지덕지 끼워맞추느라 필요 이상으로 복잡해진 부분도 있고, Synology NAS에는 잘 안 맞는 부분도 있습니다.
예를 들면 제가 한동안 매달렸던 mount 문제가 알고보니 그냥 빼먹어도 되는 단계라는 걸 깨달은 순간의 허탈감이란-_-

이것저것 정말 힘들었음에도 불구하고, 좌절하지 않고 불굴의 의지와 끈기로다가 며칠 동안 연구하고 도전하고 시행착오를 겪은 끝에 드디어
'2016년말 현재 Synology NAS에 가장 최적화된 EBS 라디오 녹음 방법'을 알아냈습니다.
이제는 방송 시간만 되면 제 NAS에 자동으로 EBS 어학강좌가 녹음된 오디오 파일이 차곡차곡 쌓입니다.
굳이 정신 없는 출근 시간에 모바일 데이터 펑펑 써가며 들을 필요 없이, WiFi 되는 곳에서 다운로드 받아서 들으면 되고,
몇 달 지난 방송이라도 언제든지 반복해서 복습할 수 있습니다.

자동녹음이 되기 전에는 아침 6시 40분부터 8시까지 4개의 EBS 라디오 프로그램만 들었었는데,
지금은 새벽 5시 50분 강좌와 밤 11시 방송 2가지까지 추가해서 도합 7개의 프로그램을 녹음하고 있습니다.
그런데 과연 제가 하루에 2시간 넘게 영어공부를 할 수 있을지는...
뭐 어차피 자동이니까 일단 그냥 녹음만 해둘 뿐이죠^^;;

Synology NAS 사용자분들 중에 저처럼 EBS 라디오 자동 녹음을 원하시는 분들께 도움을 드리고자 제 방식을 공유합니다.
필요한 스크립트 파일도 첨부했습니다.
어떻게 하는지 방법만 단순히 나열한다면 그대로 따라하기는 쉽겠지만, 몇 년 지나 환경이 변하면 또 어디선가 막히는 부분이 생길 텐데요.
그래서 직접적인 실행방법 설명에 앞서 왜 이런 작업들을 하는 건지, 어떤 단계들이 필요한지 배경 설명부터 좀 드리려고 합니다.
이걸 이해하고 숙지하셔야 혹시라도 잘 안 되고 막혔을 때 멘붕되지 않고 잘 해결하실 수 있을 거라 생각합니다.

배경 설명
 

  1. 제가 아는 EBS 라디오 방송 stream은 세 가지가 있습니다.
    다른 분들의 참고 링크에서 많이 사용하시는 RTMP(Real Time Messaging Protocol)라는 형식의 stream은 URL이
    rtmp://ebsandroid.ebs.co.kr:1935/fmradiofamilypc/familypc1m 입니다.
    RTMP라는 프로토콜은 널리 사용되는 형식이 아니라 Adobe Flash Player를 위해 만들어진 형식이며,
    EBS 라디오의 RTMP 스트림에는 음성 용량의 네 배나 되는 쓸데없는 영상(강의 장면도 아니고 EBS 로고만 나옵니다)이 함께 들어있어
    오디오 트랙만 추출해서 일반적인 음악 파일 형식으로 저장해 주는 추가 작업이 필수입니다.

    RTMP 이외에 RTSP (Real Time Streaming Protocol) 방식으로도 스트리밍을 하는데,
    URL은 rtsp://ebsonairandaod.ebs.co.kr:554/fmradiobandiaod/bandiappaac 입니다.
    이 스트림에는 원래는 영상이 없었는데, 2017년 7월 24일 이후로 작은 용량의 영상이 추가됐습니다.

    위의 두 스트림은 EBS 공중파 FM 라디오와 동일한 내용의 스트림이고요, 그 외에 다른 RTSP 스트림이 하나 더 있습니다.
    rtsp://new_iradio.ebs.co.kr:554/iradio/iradiolive_m4a 인데요, 공중파 어학강좌의 재방송 위주인 인터넷 방송입니다.
    EBS 홈페이지나 EBS 반디 앱에선 공중파 FM 방송을 '책 읽어주는 라디오', 인터넷 방송을 '외국어 라디오'라고 부르더군요.
    외국어 라디오 스트림에는 영상따위 없이 음성 데이터만 들어있어서 부가적인 오디오 추출 작업 없이 저장만 하면 됩니다.
     
    영상을 받았다가 버리는 것도 귀찮고, 본방 스트림의 경우 2017년 7월 24일부터 음량이 급격히 작아진 관계로,
    저는 인터넷 외국어 라디오 재방 RTSP 스트림을 받습니다.
     
  2. RTSP 스트림을 파일로 저장하는 방법은 프리웨어인 Libav 프로젝트라는 것이 있습니다.
    Libav 프로젝트 도구 중 하나인 avconv가 영상과 음향 관련해서 변환하고 저장하고 이런 쪽 작업에 대해서는 거의 만능인 것 같더군요.
    NAS에 Libav 도구를 설치하시면 avconv 명령으로 RTSP 스트림 데이터를 받아 파일로 저장할 수 있습니다.
    참고로 말씀 드리면 다른 참조 링크들에서는 ffmpeg을 많이들 쓰시는데, 이 ffmpeg이 2011년 이후로는 avconv로 넘어갔습니다.
     
  3. 그런데 이 Libav 도구들은 Synology NAS용 프로그램들을 받을 수 있는 패키지 센터에는 없고,
    DSM은 Linux를 기반으로 Synology에서 여러가지로 고쳤기 때문에 호환성 문제로 그냥 무작정 설치하는 것도 쉽지 않다고 합니다.
    그래서 필요한 것이 Debian chroot라는 패키지입니다.
    이것은 NAS에서 샌드박스를 지정해 놓고, 그 위에서 가상의 Debian Linux OS를 따로 돌리는 것 같은 환경을 만들어 줍니다.
    NAS에 Debian chroot를 깔아서, 그 위에 또다시 Libav 도구들을 설치해서 돌리면 되는 겁니다.
     
  4. Debian chroot와 Libav의 설치, 그리고 그 외 몇가지 작업은 우리에게 친숙한 DSM의 Web GUI 환경만으로는 안 되고,
    NAS에 터미널 접속해서 커맨드 라인 인터페이스로 작업해야 합니다.
    그래서 NAS에서는 SSH(Secure Shell) 서비스를 활성화해놔야 하고, PC에는 SSH 클라이언트 프로그램을 깔아야 됩니다.
     
  5. 위와 같은 프로그램들을 잘 사용해서 방송을 녹음하면 오디오 파일이 생길 텐데요.
    그런데 이렇게만 하면 Synology의 대표적인 음악 플레이어 앱인 Audio Station이나 DS Audio에서는 이 파일이 보이지 않습니다.
    이런 식으로 내부적으로 생성된 파일은 NAS의 미디어 색인 라이브러리에 자동으로 인식되지 않기 때문이거든요.
    이왕 NAS에 녹음을 하는 거라면 NAS의 미디어 색인 라이브러리까지 추가인식 시켜줘야 완벽한 해법이 되겠죠.
     
  6. 방송을 녹음해서 오디오 파일로 변환 저장까지 하고 라이브러리에 등록하는 방법까지 알았다 치죠.
    그런데 뭔가 빠진 게 있죠? 우리가 매일 시간 맞춰 NAS에 접속해서 녹음 시작하라고 명령하는 건 너무 귀찮잖아요.
    시간이 되면 알아서 예약 녹음이 되도록 자동화를 해줘야 합니다.
    여기서 첨부의 셸 스크립트 파일과 DSM의 '작업 스케줄러'가 필요하게 됩니다.
     

그럼 이제부터 위의 1~6의 목표에 도달하기 위해 해야 할 일들을 단계 별로 차근차근 자세하게 설명해 가겠습니다.
 
 

1단계. SSH 환경 셋업

이 단계의 목표는 위의 4번 항목입니다.
NAS의 파워유저시라면 SSH 환경 정도는 다 정비돼 있으실 테니 다음 단계로 바로 넘어가셔도 되고요.

일단 NAS DSM의 제어판 맨 아래의 '터미널 및 SNMP' 메뉴, '터미널' 탭에서 SSH 서비스를 활성화하셔야 합니다.
포트는 일반적으로 22번을 쓰게 되어 있는데요.
SSH는 해킹과 공격의 주된 타겟이라서, 저는 집에서만 접속하고 외부에서는 접속이 안 되도록 공유기에서 포트 포워딩을 하지 않았습니다.
피치 못하게 외부에서 접속해야만 한다면 외부에서는 22번이 아닌 10022라든가 22222번 같은 다른 포트로 보이도록 포워딩하는 것이 좋습니다.
SSH는 최초 녹음 세팅 단계에서만 사용합니다.
굳이 SSH를 계속 사용해야 할 다른 용도가 없다면(지금까지 안 쓰셨다면 앞으로도 안 쓰실 듯) 녹음 설정 후 다시 꺼놓으시는 게 보안 상 좋습니다.

이제 SSH 접속을 위해 PC에 SSH 클라이언트 프로그램을 설치해야 되는데, PuTTY가 가장 널리 쓰입니다.
크롬이나 파이어폭스 웹 브라우저 이용자이시고, 한 번 쓰려고 SSH 프로그램을 설치하시는 게 꺼려진다면 FireSSH 플러그인을 쓰셔도 됩니다.
저는 크롬 앱스토어에서 FireSSH를 깔아서 사용했습니다.

자 이제 SSH로 NAS에 한 번 접속해 보시죠.
PC에서 SSH 클라이언트를 띄워서 NAS 주소 넣으시고, SSH 포트 넘버 넣으시고, 사용자 ID와 패스워드를 넣으면 되는데요.
SSH 설정화면의 설명에도 나오지만 SSH 접속 ID는 Administrators 그룹에 속한 사용자의 ID만 가능합니다.
맨 처음 접속하시면 무슨 키를 신뢰하겠냐느니, 저장하겠냐느니 물어볼 텐데, 그냥 그렇다고 대답하심 됩니다.

참조 글에서는 처음부터 root 계정으로 SSH에 접속하라고 했지만, DSM 버전 6.0에서는 그렇게 안 되더군요.
일단은 다른 사용자로 NAS에 SSH 접속 후, 터미널 상에서

  sudo -i

를 입력해서 root 권한과 환경을 얻어야 합니다(패스워드 재입력 필요).
보시면 명령 프롬프트가 root@ 로 시작하는 것으로 바뀌었음을 알 수 있습니다.
일단은 요기까지. 다음은 Debian chroot package를 설치한 후에 진행하시죠.

 

2단계. Debian chroot 및 libav-tools의 설치

이 단계의 목표는 위의 2, 3번 항목입니다.
Debian chroot 패키지를 설치하려고 하는데, 패키지 센터를 아무리 뒤져봐도 그런 게 없죠? 패키지 소스를 추가해야 됩니다.
패키지 센터의 설정 메뉴 > 패키지 소스 탭의 추가 버튼을 누르시고, 이름은 대충 넣으시고
위치에 http://packages.synocommunity.com 을 입력하고 확인 버튼을 누르시면 패키지 소스에 추가됩니다.

Debian chroot를 설치할 디스크 볼륨은 녹음 파일을 저장할 공유 폴더가 있는 볼륨과 동일한 곳으로 정하는 게 약간 더 효율적입니다.
설치 볼륨의 선택은 패키지 센터의 설정 옵션 '일반' 탭 맨 위의 '기본 볼륨'에서 설정할 수 있습니다.
일반 탭 맨 아래의 '신뢰 수준'이 'Synology Inc. 및 신뢰할 수 있는 게시자'로 돼있는지도 확인하시고요.

이제 패키지 센터에 '커뮤니티'라는 tab이 추가되고, 그 안에 Debian Chroot가 보입니다.
Debian Chroot의 설치 버튼을 클릭하면 Python 프로그래밍 언어도 설치해야 한다고 나오는데, 그러라고 허락하세요.
다른 Python Module이 이미 설치돼 있더라도 SynoComminity 것을 무조건 설치하더군요.
설치가 끝난 후 혹시라도 Debian Chroot가 '중지됨'으로 표시되어 있으면 작업 메뉴에서 '실행'을 꾹 눌러주세요.
여기까지 하면 패키지 센터에는 더 이상 볼 일이 없고, 이제부터는 SSH 터미널 상에서 작업을 하게 됩니다.

chroot는 관리자 권한으로만 실행 되니 터미널에서 sudo -i 해서 root 권한을 얻는 것 잊지 마시고요.
chroot 모드로 들어가는 command는 다음 둘 중에 아무 거나 입력하시면 됩니다.

  chroot /usr/local/debian-chroot/var/chroottarget /bin/bash
  /var/packages/debian-chroot/scripts/start-stop-status chroot

둘다 복잡하긴 마찬가지지만 shell의 경로 이름 자동 완성 기능을 사용하면 두번째 것을 약간 더 쉽게 입력할 수 있습니다.
Directory path를 다 칠 필요 없이 두어 글자만 치고 키보드의 tab 키를 누르면 자동 완성이 되니 편한 이용에 참고하시기 바랍니다.

이렇게 chroot에 들어오셨다면, ☞Debian chroot 홈페이지☜에서는 다음과 같이 초기 setup을 하라고 조언합니다.
뭐, 따라해 주는 게 좋겠죠.

  apt-get update

라고 입력해서 업데이트하고,

  apt-get upgrade

업그레이드하고,

  apt-get install locales   dpkg-reconfigure locales

이렇게 언어/지역설정도 다운로드 받아서 설정합니다.
아래 그림과 같은 창이 뜨는데, en_US.UTF-8 UTF-8 항목에 커서가 있는 상태에서 space 바를 눌러 선택하고 Enter 치면 됩니다.
저는 혹시 몰라서 Enter 치기 전에 ko_KR.EUC-KR EUC-KR과 ko_KR.UTF-8 UTF-8 항목에서도 space를 눌러두었습니다.
그 다음 나타나는 창에서 default locale로 en_US.UTF-8 선택하시고 엔터 치시면 되고요.

 

  dpkg-reconfigure tzdata

이렇게 해서 시간대 설정도 Asia > Seoul로 맞춰두면 나쁠 것 없겠죠.

그리고 가장 중요한 것, Libav 도구들을 설치해야죠.

  apt-get install libav-tools

이렇게요. 설치할 때 계속하겠냐고 물어보면 'Y(소문자 y도 됩니다)' 라고 입력하고 엔터 치시면 됩니다.

이러고 나면 Debian chroot setup과 libav-tools 설치는 끝났고, chroot 상에서 볼 일도 다 봤으니

  exit

명령을 입력해서 DSM 환경으로 나옵니다.
exit 명령을 여러 번 입력하면 root 계정에서도 나가버리고, SSH 터미널까지 끝내버리니 exit은 한 번만 하시는 것 주의하시고요.
 

 

3단계. ebs_record.sh 업로드

일단 

ebs_record.sh
다운로드

 첨부파일을 받으셔서 NAS에 업로드하세요. 아무 폴더에나 올려놔도 됩니다.

저는 /volume1/music 밑에 갖다두었습니다.
Audio Station 등 음악관련 패키지를 깔면 music 공유 폴더가 자동으로 생기는 건 아시죠?
제 경우 music 공유 폴더를 디스크 볼륨 1에 만들었기 때문에 shell 상에서 경로가 /volume1/music입니다.
볼륨 2에 만드신 분은 /volume2/music이겠지요.

ebs_record.sh가 저 위쪽에서 얘기한 2번과 5번 항목의 일을 연속으로 실행해주는 바로 그 파일입니다.
Shell script라고 해서 shell 상에서 순차적으로 실행할 명령어들을 주루룩 적어놓은 텍스트 파일이고, 텍스트 편집기로 편집할 수도 있습니다.
다른 분들의 참고 링크에도 보면 같은 이름의 파일이 있는데, 얼핏 비슷해보여도 중요한 알맹이가 다르니 혼용하지 마시기 바랍니다.
특히 뭐가 다르냐면, 참고 링크의 ebs_record.sh 스크립트는 Debian chroot 상에서 돌아가고, 제 스크립트는 DSM에서 돌아갑니다.

참조 링크 내용들을 보면 DSM 상의 공유 폴더를 chroot 상의 작업 directory에 mount하는 데 상당한 노력을 기울이고 있습니다.
그분들이 directory 마운트 작업을 왜 그렇게 중시했는지 알려면 chroot 명령어의 원래 의미부터 이해해야 하는데요.
Debian chroot 상태에서는 /usr/local/debian-chroot/var/chroottarget이라는 복잡한 디렉토리가 루트 디렉토리 / 처럼 보이고,
그 아래의 directory에만 읽고 쓸 수 있지, NAS의 공유 폴더들에는 접근을 할 수가 없습니다.
또 반대로 Debian chroot의 경로도 File Station, Audio Station이나 여타 NAS 서비스에서는 안 보입니다.
그래서 chroot 작업결과를 공유폴더에 올려놓기 위해서는 공유 폴더가 마치 chroot 밑의 폴더인 것처럼 mount해줄 필요가 있었던 것인데요.

일단 mount 명령을 참조 링크에 나온 형식대로 써서는 DSM 6.0에서 안 먹힌다는 문제가 있습니다.
이건 제가 나름 고생해서 mount 명령을 그냥 쓰지 말고 mount -o bind 라는 option으로 쓰면 된다는 사실은 알아냈고요.
NAS를 리부팅하면 마운트가 풀리기 때문에 NAS 리부팅 시 자동으로 마운트해주는 방법까지도 배웠습니다.
그런데 저는 chroot 상에서 스크립트를 돌릴 것이 아니라 DSM 상에서 돌릴 거라고 했죠?
생각해 보니 DSM shell에서는 chroot 작업 폴더도, 공유 폴더도 둘다 보이니 애초에 DSM script에는 mount 자체가 필요 없던 겁니다-_-

쓸데없는 잡설이 너무 길었는데요.
누군가 제 방식을 따라하다가 막혔을 때, 혹시라도 해결해보려다가 디렉토리 마운트에 시간을 허비하실까봐 노파심에 말씀 드렸습니다.
잡설을 시작한 김에 ebs_record.sh 파일 내용을 좀더 설명 드리겠습니다.

#!/bin/sh

 

PROGRAM_NAME=$1

RECORD_SECS=$2 

DEST_DIR=$3/$1`date +_%y%m`

 

RADIO_ADDR="rtsp://new_iradio.ebs.co.kr:554/iradio/iradiolive_m4a"

CHROOTTARGET=/usr/local/debian-chroot/var/chroottarget

TITLE=$PROGRAM_NAME`date "+ %Y.%_m.%_d."`

TEMP_AAC=/tmp/`date +%H%M%S%N`.m4a

FINAL_AAC=$PROGRAM_NAME`date +_%y%m%d`.m4a

 

chroot $CHROOTTARGET avconv -rtsp_transport tcp -i $RADIO_ADDR -t $RECORD_SECS -codec:a copy -vn -metadata title="$TITLE" -metadata date=`date +%F` $TEMP_AAC

 

if [ ! -d "$DEST_DIR" ] ; then

  mkdir -p "$DEST_DIR"

  synoindex -A "$3"

fi

mv $CHROOTTARGET$TEMP_AAC "$DEST_DIR/$FINAL_AAC"

synoindex -a "$DEST_DIR/$FINAL_AAC"


스크립트 파일의 위쪽 대부분은 단지 아래쪽에서 사용할 변수들과 파일이름 등을 지정하는 부분입니다.
실질적으로 가장 중요한 것은 중간쯤, chroot로 들어가서 avconv로 RTSP 스트림을 지정된 시간동안 녹음하라는 단 한 줄입니다.
EBS 스트림의 오디오 트랙은 AAC(Advanced Audio Coding)라는 방식으로 압축되어 있기 때문에 그에 걸맞는 .m4a라는 확장자로 저장합니다.

마지막 여섯 줄은 생성된 M4A 파일을 지정된 폴더에 지정된 이름으로 옮겨놓고, DS Audio 등에서 보이도록 등록해줍니다.
DS Audio에서 플레이하려면 저 위의 5번 항목에서 언급한 미디어 색인 등록이 필수적인데, synoindex 명령이 바로 그것입니다.
이건 다른 분들 링크의 스크립트에는 아예 없었지만, 제가 정말 열심히 NAS를 공부한 끝에 알아낸 거랍니다.
 
 

4단계. 녹음 테스트

지금까지의 모든 설정이 잘 됐는지 한 번 테스트해봅시다.
ebs_record.sh 안에서 chroot를 부르기 때문에 테스트에도 관리자 권한이 필요합니다.
명령 프롬프트가 root@ 로 시작하는지(sudo -i를 실행한 상태인지) 확인하시고요.
우선 SSH 터미널 상에서 ebs_record.sh 파일이 있는 경로로 이동합니다.

  cd /volume1/music

이 폴더는 사람마다 다르겠죠? 위 3단계에서 ebs_record.sh 파일을 넣어준 경로를 잘 써주시고요.

Linux 계열 OS에서 파일을 실행하기 위해서는 파일에 먼저 실행권한을 줘야 합니다.

  chmod 777 ebs_record.sh

이렇게요. 여기서 777이라는 숫자는

잭팟

'모든 사람이 읽고 변경하고 실행할 수 있다'는 의미입니다.

ebs_record.sh를 실행할 때는 3개의 매개변수를 써줘야만 하는데요.
첫번째는 방송 프로그램 제목(파일 이름), 두번째는 녹음할 시간(초 단위), 마지막은 저장할 폴더 이름입니다.

  ./ebs_record.sh xxx 30 yyy

라고 한 번 실행해 보시죠.
그러면 녹음을 하고 있다는 뭔가 복잡한 메시지가 30초간 화면에 표시됩니다.
끝난 후 현재 폴더 밑에 yyy/xxx_(4자리 년월)이라는 폴더가 생겼고, 그 속에 xxx_(6자리 날짜).m4a라는 이름의 오디오 파일이 생성됐고,
Audio Station이나 DS Audio의 재생목록 중 '최근 추가됨'에서 이들이 확인되고, 플레이했을 때 녹음된 방송이 잘 들리면 성공한 겁니다.

이러면 모든 준비가 완료됐고, 이제 DSM의 작업 스케줄러에서 시간 예약만 걸어주면 끝입니다.
테스트를 하고 나면 NAS의 미디어 라이브러리에 yyy/xxx_(년월)이라는 폴더와 'xxx (날짜)'라는 필요 없는 트랙이 추가돼 있을 텐데요.
모든 테스트가 끝난 후

  synoindex -D yyy   rm -rf yyy

해주시면 말끔히 정리됩니다.

만약 뭔가가 잘 안 됐다면 ebs_record.sh 실행 시의 오류 메시지를 찬찬히 살펴보시고,
위의 1 ~ 4단계 중 혹시 뭔가 잘못되지는 않았는지 다시 한 번 꼼꼼히 돌아보시기 바랍니다.
 
 
5단계. 녹음 시간 예약

이제 마지막으로 저 위 배경 설명 6번의 자동화 작업입니다.
참조 링크들을 보시면 Linux cron(crontab)을 이용하는 예약 녹음 방법이 나오는데요.
cron은 시간 예약 방식이 덜 직관적인 건 둘째 치고, NAS를 리부팅할 때마다 cron daemon을 다시 시작해줘야 한다는 애로사항이 있습니다.
불편하고 복잡한 cron은 그냥 잊어버리시고, DSM의 작업 스케줄러를 이용하시는 방법을 추천 드립니다.

NAS에 웹으로 접속하셔서 제어판을 보시면 아래쪽에 작업 스케줄러라는 것이 있습니다.
작업 스케줄러에서 생성 > 예약된 작업 > 사용자 지정 스크립트 메뉴를 선택하면 새 녹음 작업을 생성할 수 있습니다.
작업 이름은 아무렇게나 쓰시면 됩니다. 그런데 한글은 안 되니 영어로 해주시고요.
사용자는 반드시 root여야 합니다. 바꾸지 마세요.

두번째 탭에서 시간을 예약하게 돼있습니다.
제가 녹음하는 7개의 방송은 모두 월요일부터 토요일까지 방송하니까 요일은 그렇게 설정하면 되고,
시간은 하루에 한 번, 방송 시작하는 시간을 써줍니다.

이제 마지막 탭에서 ebs_record.sh 명령을 써주면 됩니다.
위의 녹음 테스트 때와는 달리 절대경로를 다 써줘야 한다는 것, 주의하세요.
예를 들어 제가 입이 트이는 영어를 녹음할 때는

  /volume1/music/ebs_record.sh "입이 트이는 영어" 1200 "/volume1/music/Language/EBS 입이 트이는 영어"

이렇게 써줬습니다.

제 경우의 폴더 경로는 저렇지만, 여러분은 여러분만의 경로를 써주셔야 되겠죠.
따옴표를 쳐준 이유는 폴더나 파일 이름 중간에 빈 칸이 있기 때문이고, 빈 칸이 없다면 따옴표를 안 쓰셔도 됩니다.
주의하실 점 중 하나는 ebs_record.sh가 'EBS 입이 트이는 영어'라는 폴더는 만들어주지만, 그 위 경로는 만들어주지 않는다는 점입니다.
즉, /volume1/music/Language라는 폴더는 원래부터 제 NAS에 있던 폴더입니다.

입이 트이는 영어의 방송 시간은 20분이라서 20 x 60 = 1200초를 써준 것이고요.
귀가 트이는 영어, POWER ENGLISH 같은 프로그램의 경우엔 길이가 19분 30초라서 1170이라고 써줬고,
포켓 잉글리쉬는 9분 30초짜리 방송이기 때문에 570을 써줬습니다.
이와 같은 방식으로 녹음할 방송 프로그램 하나마다 작업 하나씩 작업 스케줄러에 등록하시면 됩니다.
저는 6개의 방송을 녹음할 거라서 녹음 작업이 6개 등록되어 있지요.

 

그리고 마지막으로 하드 디스크 절전 모드 대책이 필요합니다.
위와 같이 설정하고 며칠 녹음했더니 가장 일찍 시작하는 프로그램 앞부분이 25초 가량 잘려나갔더라고요.
원인을 살펴보니 바로 하드디스크 절전(대기) 세팅 때문이었습니다.
HDD 를 20분간(시간은 제어판 > 하드웨어 및 전원 > HDD 대기 기능에서 변경 가능) 안 쓰면 절전모드에 들어가는데,
제 NAS는 개인용이라 새벽 6시에는 쓰는 사람이 없어 십중팔구 절전 모드인 겁니다.
제 NAS(DS213)와 HDD(WD Green 3TB)가 깨어나는 데 20초가 넘게 걸리기 때문에 앞부분 녹음이 날아갔던 것이죠.

 

저는 이 문제를 각각 5시 49분, 6시 39분, 22시 59분에 '깨어나는 작업'을 스케줄러에 등록해서 해결했습니다.
깨어나는 작업이라고 해서 별건 아니고 위와 같은 사용자 정의 스크립트 작업에 실행 명령으로 ls /volume1 이라고 써줬습니다.
디스크 볼륨 1의 폴더 리스트를 보이라는 명령인데, 봐줄 사람은 없겠지만 적어도 HDD는 깨어나겠지요.
저는 Debian chroot도 녹음 폴더도 볼륨 1에 있지만, 서로 다른 볼륨에 있다면 ls /volume1 /volume2 처럼 써주면 되지 않을까 싶습니다.

 



자 이제 다 됐습니다.
기다리시기만 하면 NAS가 방송을 자동으로 녹음해주고, Audio Station과 DS Audio의 최근 추가됨 리스트에 새로 녹음된 파일이 뜰 겁니다.
혹시 Audio Station에서 파일은 보이지만 폴더가 안 보인다면 File Station 등에서 폴더 이름을 딴 걸로 바꾸셨다가 다시 되돌리시면 될 거고요.

그럼 잘 들으시고 열공하세요~