SpringnoteFS
SpringnoteFS란?
Springnote Filesystem은 스프링노트를 저장공간으로 활용하여 mount 할 수 있는 LInux Filesystem입니다. 자신의 Springnote를 마운트한 후에 디렉토리 생성, 파일 복사, 삭제 등을 수행할 수 있습니다. Gmail을 저장공간으로 활용하는 GmailFS와 같은 프로그램입니다. 저작권 따위는 없으므로 마음대로 수정하셔서 사용하셔도 됩니다.
개발정보
- 제작자 : superkdk @ InoCrazy, Inc.
- 제작기간 : 2 Day (2008-11-13 ~ 2008-11-14)
- 개발언어 : Ruby
요구사항
- fuse
- fusefs
- springnote_resources
설치방법
- FUSE (Filesystem in Userspace) 라이브러리 설치
- FuseFS 라이브러리 설치
- springnote_resources gem 설치
-
SpringnoteFS 설치
SpringnoteFS를 다운 받은 후, 적당한 디렉토리에 압축을 풀어줍니다.
(여기서는 /home/superkdk/springnotefs에 압축을 풀었다고 가정하고 설명토록 하겠습니다.)
사용방법
설정하기
springnotefs 홈디렉토리에 있는 springnotefs.yml 설정파일을 열어서, 자신의 스프링노트 도메인으로 변경합니다.
- # Configuration for Springnote.
consumer_token: 9hPTazEKME8N26wF4wv8g
consumer_secret: VNfPuvThRZObYJfZH1tJdD7trcXUs6vPUAojISMmq3M
domain: springnotefs
스프링노트를 마운트할 디렉토리가 없다면 생성합니다. 여기서는 /home/superkdk/springnote에 마운트 시킨다고 가정하겠습니다.
마운트하기
shell에서 springnotefs.rb 스크립트를 실행합니다.
- $ ruby springnotefs.rb mount ~superkdk/springnote &
springnotefs.rb 스크립트의 사용법은 다음과 같습니다.
- $ ruby springnotefs.rb action mountpoint [configfile]
- action : mount | unmount
- mountpoint : mount 시킬 디렉토리입니다.
- configfile : springnote_resources에서 사용할 OAuth 관련 YAML 설정파일입니다. 기본값으로 springnote.yml로 설정됩니다.
다음은 springnotefs.rb 스크립트의 사용예제입니다.
- $ ruby springnotefs.rb mount /tmp/springnote # /tmp/springnote에 마운트합니다.
- $ ruby springnotefs.rb unmount /mnt/springnote # /mnt/springnote에 마운트된 것을 해제합니다.
- $ ./springnotefs.rb mount springnote springnote2.yml # 현재 디렉토리의 springnote에 마운트하며, 설정파일로 springnote2.yml을 사용.
처음으로 마운트할 경우, OAuth 인증에서 access token을 받아오기 위해서 다음과 같은 내용이 보여질 것입니다.
- Open your browser and visit this url. Hit enter after login:
- https://api.openmaru.com/oauth/authorize?oauth_token=WnuGLZ0IVDdI0hBqL32nwg
해당 URL로 접근하셔서, 로그인을 하게되면 SpringnoteFS에서 access token을 받아올 수 있습니다. shel에서 엔터를 치면 마운트 과정이 완료되게 됩니다. 또한 사용자 편의를 위해서 access token을 받아온 후, .access_token 이라는 hidden file에 OAuth token 관련 정보를 저장해둡니다. 따라서 이 후 마운트부터는 위의 링크 표시가 나타나지 않습니다. 설정 파일이 변경되었을 경우에는 다시 access token을 받아오도록 되어있습니다.
마운트 해제하기
백그라운드로 돌고있는 마운트 명령을 fg로 불러온 후, Kill 시킵니다.
그 후 아래의 명령으로 마운트를 해제합니다.
- $ ruby springnotefs.rb unmount /home/superkdk/springnote
마운트된 파일시스템에 들어가 있는 경우, unmount시 오류 메시지를 발생시킵니다.
파일시스템에서 나온 후, unmount합니다.
구현 기능
디렉토리 구조
자신의 스프링노트의 노트 구조가 파일시스템으로 매핑됩니다. 하나의 페이지는 디렉토리로 간주되며, 따라서 그 페이지의 서브 페이지들은 서브 디렉토리가 됩니다. 페이지 내의 첨부파일들은 해당 디렉토리 내의 파일로 보여집니다.
디렉토리 생성 및 삭제
mkdir, rmdir 명령을 사용하여 디렉토리를 생성, 삭제할 수 있습니다. 디렉토리가 생성될 때마다 해당 위치의 스프링노트 페이지가 생성되게 됩니다. 해당 페이지의 내용은 디렉토리 내의 .source 파일에서 확인하실 수 있습니다.
파일 추가 및 삭제
cp, mv, rm 명령 등으로 특정 디렉토리에 파일을 복사하거나 삭제할 수 있습니다. 디렉토리에 추가된 파일은 해당 페이지에 첨부파일로서 저장되게 됩니다.
주의사항 : FuseFS의 제약으로 mv 명령어는 파일을 복사한 후, 삭제하는 방식으로 진행됩니다. 따라서 사용시 주의하시기 바랍니다.
참조
History
Last edited on 11/18/2008 23:24 by inocrazy
Comments (0)