본문 바로가기

IT(기타)/분산서버

IPFS - 파일/디렉토리 업로드


이번 포스팅은 IPFS를 사용하는 방법에 대한 내용입니다.

소개글에도 나와있는 것처럼 IPFS는 File System의 한 종류입니다. 개발자들이라면 익숙하실만한 FTP, 그리고 일반인들에게도 익숙한 N드라이브나 구글드라이브와 같은 클라우드 파일 시스템처럼 파일을 저장하고 그것을 다운로드 하기 위한 기능을 제공합니다.


먼저 실습을 위해 C드라이브 내에 폴더를 하나 생성했습니다.



폴더(디렉토리)의 이름은 ipfs-workspace입니다. 아무 이름이나 지어주셔도 상관없습니다. 하지만 저는 이 디렉토리 이름을 가지고 명령어를 입력하겠습니다.


먼저 업로드할 파일을 하나 작성해보겠습니다. 테스트 삼아서 해보기에는 한글이 들어간 문서를 작성해보는게 좋겠습니다.


저는 이렇게 작성해보았습니다.


<!doctype html> <html> <head> <title>Hello IPFS</title> </head> <body> <h1 style="color:#777777">안녕 IPFS!</title> </body> </html>


이를 ipfs-workspace에 저장해줍니다. 저는 test.html이라고 저장했습니다.



이제 추가를 한번 해보겠습니다.

ipfs add test.html이라고 명령어를 입력합니다.



만약 위와 같이 에러 메시지가 나왔다면 현재 ipfs daemon이 돌아가고 있는 상태가 아닙니다. 전편에서 ipfs daemon 명령어를 이용해서 ipfs를 실행시켜주었습니다. 다른 콘솔창을 하나 더 열고 ipfs daemon을 실행시킨 상태에서 다시 시도해봅니다.



데몬이 돌아가고 있는 상태라면 위와 같이 게이지가 차면서 100에 도달하면 업로드가 완료된겁니다.

여기서 중요하게 보실 것은 그 다음에 나와있는 added QmQzyvt9qUmyP3QUAyhZ2dCERvHU7RtpdU9sjGvG4wR7tT test.html 입니다.

그 중에서도 특히 QmQzyvt9qUmyP3QUAyhZ2dCERvHU7RtpdU9sjGvG4wR7tT 가 굉장히 중요한데요, 개발자들에게는 익숙하실 만한 문자열인 해시(Hash)값입니다. 이 값을 이용해서 우리가 올린 test.html에 접근할 수 있습니다.


https://gateway.ipfs.io/ipfs/QmQzyvt9qUmyP3QUAyhZ2dCERvHU7RtpdU9sjGvG4wR7tT


위 링크로 들어가보시면 파일이 업로드 된 것을 확인할 수 있습니다. 같은 방법으로 이미지 파일을 올리는 것도 가능합니다.


https://gateway.ipfs.io/ipfs/QmbH8pKYXhrRnvyVNnw4kZJK1VCrQCK1FksAYXXXwRPrzj


이번에는 디렉토리를 업로드 해보도록 하겠습니다. 우선 적당한 디렉토리를 만들어주세요. 저는 디렉토리 안에 디렉토리를 넣고 사진, HTML, CSS 등 여러가지 다양하게 넣어봤습니다. 그리고 이름은 test-directory라고 지어주었습니다.




그 후 ipfs add -r test-directory 라고 명령어를 입력해주면 다음과 같이 디렉토리를 추가할 수 있습니다. 여기서 -r 옵션의 의미는 recursive하게 디렉토리 내에 있는 디렉토리들까지 업로드 해준다는 의미입니다. (자세한 내용은 ipfs add --help 를 입력해보세요. 추가적인 add 명령어의 옵션들에 대해 확인하실 수 있습니다.)


https://gateway.ipfs.io/ipfs/QmYVTpk4qA15SSWAMqUuG4H5yH9y6tbgsXRWfQi4TJJJst


위로 들어가시면 제가 만든 디렉토리를 확인해 보실 수 있습니다. 여러분이 만들어서 업로드한 디렉토리도 한번 확인해보세요.

또한 지금까지 업로드한 파일들에 대해서 확인하려면 webui의 Files에서 확인할 수 있습니다.







여기까지 ipfs add를 이용하여 ipfs 네트워크에 파일을 업로드 하는 것을 해보았습니다.



출처: http://biteth.tistory.com/15?category=707022 [BitEth]

'IT(기타) > 분산서버' 카테고리의 다른 글

IPFS - IPFS 설치  (0) 2018.06.05
IPFS - 분산된 웹(Distributed Web)  (0) 2018.06.05