안녕하세요,
이 글을 어디에 쓸까 하다가 그래도 생활에 관련된 글이니 생활 계시판에 올려보자 해서 올리게 되었습니다.
제가 판매한 IP 카메라 활용법에 관한 글 입니다.
제가 장터에 판매한 IP 카메라를 저도 시놀로지에 연결해서 저희 집 CCTV 로 사용하고 있는데요 사실 시놀로지에 용량이 그렇게 넉넉하지도 않고 그렇다고 하드를 추가하자니 베이가 부족하고 해서 중고 스토리지 서버를 사서 하드를 꽉 채워놓고 녹화를 해볼까 생각이 들어 장터에 있는 스토리지 서버들로 대략 견적을 내어보니 금액이 만만치 않습니다..
그래서 여러모로 방법을 생각해보다 얼마전 2CPU 에서 클라우드 서비스 추천하는 글을 보았는데 아마존 클라우드가 있길래 보니 속도가 느려서 별로 추천하지 않는다는 댓글이 있더군요. 아마존 클라우드 드라이브가 한국에 정식적으로 제공하지 않는 서비스다보니 속도가 안나오는건 당연하다거니 싶었고 그래도 아마존 클라우드를 대체할 만한 서비스는 없는것 같아 일단 속는셈치고 가입을 해보았습니다.
일단 아마존 클라우드 드라이브 서비스는 별도 결제 없이 첫 3달은 무료로 사용이 가능하고 가입하자마자 자동결제를 해지할수 있게 되어있었습니다.
가입한 이후 웹 인터페이스를 통해 큰 파일을 올려보니 생각보다 속도가 잘 나왔습니다. 그래서 만약 서드파티 프로그램을 연결해서 전송할 경우에도 QoS 없이 잘 되나 테스트 해보기 위해 시놀로지 Cloud Sync 에서 Amazon Cloud Drive 를 연결하여 업로드 속도를 테스트해보니 10~13MB/s(Mbps 아님)가 꾸준히 나오더군요.
그 이후에 아마존 클라우드 드라이브가 FTP 를 제공하는지 찾아보았는데 서비스 취지에 맞지 않아서 인지 FTP는 제공하지 않고 있었습니다. 그래서 저는 일단 카메라가 제 서버의 FTP 에 업로드 하면 제 서버에서 자동으로 아마존 클라우드 드라이브로 올릴수 있는 방법을 찾아보았습니다.
그래서 리눅스에서 업로드 작업을 자동으로 해줄수 있게끔 되어있는 프로그램을 찾아보니 역시 rclone 이라는 프로그램이 있었습니다.
rclone 사이트에 있는 방법대로 prebuilt binary 를 다운받아 설치한후 실행해보니 잘 됩니다.
일단 rclone config 명령어를 통해 Amazon Cloud Drive 를 등록작업을 진행합니다. 아래 링크에 따라서 진행하신 뒤 먼저 앞으로 해당 연결에 사용할 이름을 입력하시고(예 ACD), 만약 원격 서버에서 작업하시는 경우 Automatic Config (?) 할거냐고 물어보는 부분에서 n 을 입력하신 뒤 rclone prebuilt binary 실행파일 중 자신의 컴퓨터 OS 에 맞는걸 다운받으신 후 로컬 컴퓨터에서 인증 작업을 진행하신 뒤에 나오는 엑세스 토큰을 원격 서버의 입력창에 입력해주셔야 합니다. 원격 서버에서 n을 입력하시면 나오는 안내에 따라 로컬에서 진행하시면 됩니다.
http://rclone.org/amazonclouddrive/
저는 기본적으로 모든 영상을 아마존 클라우드 드라이브로 올리고 제 서버에서는 삭제하려고 했기 때문에 그런 옵션이 있나 봤더니 rclone move 명령어를 통해 가능하더군요. rclone move localfile.mp4 ACD:/Videos/CCTV/ 이렇게 입력하시면 /Videos/CCTV 로 옮겨지고 로컬 파일은 지워지게 됩니다(ACD 는 위에서 config 작업시 입력한 연결 이름입니다).
주의하실점은 rclone move localdir ACD:/Videos/CCTV/ 이렇게 입력하신다고 해서 /Videos/CCTV/localdir/ 아래 모든 파일이 복사가 되는것이 아니라 localdir 폴더 안의 모든 하나하나의 파일들이 /Videos/CCTV/ 라는 단일 디렉토리에 옮겨집니다. rsync 랑 헷갈릴수 있다고 주의사항에 나와있네요.
일단 카메라가 FTP 로 영상을 제 서버로 올릴수 있도록 vsftpd 로 FTP 서버를 구축하고 보안을 위해 ssh 로그인이 불가능한 카메라 전용 계정을 만들어 로그인하도록 설정하였습니다. 카메라가 SFTP 는 지원하지 않아서 FTP 로만 만들었습니다.
그리고 카메라의 네트워크 설정 메뉴에서 FTP 탭을 들어가 FTP 정보를 입력한 뒤 녹화 설정 메뉴에서 HD 영상을 5초마다 끊어서 올리도록 하였습니다.
Video Streaming : [HD]
Recording Storage : [FTP]
Time limit of Video File(Seconds) : [5]s
Recording Mode : [Start Recording]
이렇게 설정하였습니다.
카메라가 FTP로 업로드 할 경우 파일 하나의 용량이 3MB 로 제한되어 있어서 저의 경우는 1280x800 30fps max bitrate 3500 영상을 6초 녹화하면 3MB 가 되기 때문에 넉넉히 5초로 잡았습니다.
이후 Save 를 누르면 녹화 후 자동으로 서버로 전송이 되게 됩니다.
서버에서 FTP 를 통해 파일이 잘 저장되는것을 확인하였고 이제 저는 이 파일들을 자동으로 아마존 클라우드 서비스로 보낼수 있게 스크립트를 만들었습니다.
카메라가 FTP 탭에서 설정한 루트에 자동으로 자신의 맥어드레스 폴더를 만든 이후 날자별로(20161023) 폴더를 만들어 녹화하기 때문에 디렉터리 그대로 전송이 가능하도록 해야 했습니다. 다만 rclone 이 디렉터리 트리를 그대로 유지하면서 전송하는것은 지원하지 않아서 제가 직접 스크립트로 해당 기능을 구현해야 했습니다(그런데 나중에 보니 지원이 되는것 같습니다).
샘플 디렉터리 구조는 아래와 같습니다.
카메라에 설정된 FTP 루트 : [/home/user/data/]
카메라가 자동으로 전송한 파일의 위치 [/home/user/data/001AEC2A0111/20161023/20161023.215316.mp4]
이 파일을 자동으로 전송해주게끔 한 파이썬 스크립트 입니다.
스크립트 보기 : https://gist.github.com/taylor224/6e1c657b19496d6c648e44f5a9a40175
이 스크립트를 cron 에 등록하여 그냥 실행하면 일반 bash 와 환경이 달라 실행이 되지 않습니다. 그래서 위 스크립트 보기 페이지의 두번째 파일인 runauto.sh 파일을 통해 파이썬 스크립트를 bash 와 같은 환경에서 실행시켜 줍니다. 스크립트는 사용하시는 디렉터리에 따라 약간씩 수정이 필요합니다.
환경에 맞게 스크립트를 수정하신 이후 chmod 755 runauto.sh 명령어를 통해 해당 스크립트 파일이 실행 가능하도록 바꾸어 주신 뒤 sh runauto.sh 명령어를 통해 실행 테스트를 해보시면 됩니다. 꼭 절대경로로 스크립트를 작성하셔야 합니다. 테스트 파일과 디렉터리를 올려놓으신뒤 아마존 클라우드로 잘 올라가는지 보시면 됩니다. 올라간뒤 해당 파일은 서버에서 삭제가 되니 주의하시기 바랍니다.
이후 crontab -e 명령을 통해 cron 작업 에디터를 띄우신 뒤 맨 아래에
*/2 * * * * sh /home/user/runauto.sh
라고 추가해주시면 2분마다 해당 위치의 스크립트를 실행시켜 줍니다.
cron 작업을 등록하니 2분마다 아마존 클라우드 드라이브로 자동으로 전송이 되는것을 확인하였습니다.
5초씩 잘리긴 하지만 아마존 계정이 짤리지 않는 한 평생 저장이 가능합니다.
5초씩 잘린 동영상을 플레이할 전용 플레이어도 만들어볼까 하는데 시간이 많이 없어서 당분간은 힘들것 같네요. 아마 파일을 여러개 받으신후 다음팟플레이어 같은걸로 여시게 되면 순차 플레이가 가능할것으로 보입니다.
이런 클라우드 백업의 장점은 DVR 자체가 없기 때문에 도둑이 침입해서 DVR을 들고가는 바람에 영상이 없어지는 상황이 없다는것 같습니다.
일단 아마존 클라우드 드라이브의 약관 상 개인적인 사용일 경우에는 이러한 작업이 약관 위반은 아니라 괜찮을것 같습니다.
다만 기본 약관 상 아마존이 제 파일을 열어보거나 분석할수는 있다고 하네요. 사진의 경우는 얼굴 인식 알고리즘을 통해 분석한다고 합니다.
약관상 365일 녹화 저장이 가능하도록 무제한 사용이 가능하지만 그래도 모두가 나눠쓰는 클라우드니 저는 대략 4~60일이 지난 데이터는 삭제하려 합니다.
이 방법으로 아마존 클라우드 드라이브 뿐 만 아니라 Rclone 이 지원하는 아래의 클라우드 서비스에도 동일하게 백업할수 있다고 합니다.
다만 config 방법은 약간 다를수 있으니 Rclone.org 참고하셔서 진행하셔야 할 것 같습니다.
Rclone 지원 list
- Google Drive
- Amazon S3
- Openstack Swift / Rackspace cloud files / Memset Memstore
- Dropbox
- Google Cloud Storage
- Amazon Drive
- Microsoft One Drive
- Hubic
- Backblaze B2
- Yandex Disk
- The local filesystem
이 글이 많은 분들께 도움이 되었으면 좋겠네요
감사합니다.
ftp ¿©´Â °Í ±îÁø ¹®Á¦ ¾øÀ» µí Çϳª
¾÷·Îµå ÈÄ ÀÚµ¿»èÁ¦±îÁö °¡´ÉÇÒ·±Áö ¸ð¸£°Ú³×¿ä.