상세 컨텐츠

본문 제목

개발환경을 간단하게 공유한다, nfs(network file system)!

CS지식 학습

by Tabris4547 2024. 2. 1. 10:14

본문

728x90

여러분들은 코드를 어떻게 공유하시나요?
가장 많이하는 방법으로 git이 있습니다.
그런데,만약 git을 사용하지 못하는 환경에서는 어떻게 해야할까요?
 


문제를 제기한 상황

 

노트북으로 크로스컴파일을 한 후에

라즈베리파이에서 코드를 동작시키고 있습니다.

현재 라즈베리파이에 설치된 OS는 무선 net카드가 없습니다.

그래서 git으로 코드를 다운받아 쓸 수 없습니다.

 

scp사용의 한계점

 

https://wlsvud84.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-scp-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95-%ED%8C%8C%EC%9D%BC-%EC%A0%84%EC%86%A1-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%ED%8C%8C%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0-%ED%8C%8C%EC%9D%BC-%EB%B0%9B%EA%B8%B0

 

리눅스 scp 명령어 사용법 ( 파일 전송 프로토콜 / 파일 보내기 /파일 받기 )

안녕하세요 롯사입니다. 이번 시간 포스팅은 리눅스 기반 운영체제에서 사용하는 파일 전송 프로토콜 scp에 대해서 포스팅해보겠습니다. 리눅스 기반 시스템 기반을 운영하고 계신 현업 종사자

wlsvud84.tistory.com

 

처음에는 scp를 활용해서 작업을 했습니다.

컴파일한 결과물만 보낸다면 된다 생각했기 때문입니다.

하지만 프로그램 크기가 커지면서 

scp전송방법이 불편하게 느껴졌습니다.

현재 커널프로그래밍으로 각각을 동작할 모듈을 만들었는데

기본 main인 toy_system과 각각의 모듈도 함께 전송해야했습니다.

프로그램에 엔진,센서,상태머신 등등

볼륨이 커지면 커질수록 일일이 하나하나 전송해서 사용하는 것에 한계를 느꼈습니다.

 

nfs란 무엇인가

https://www.ibm.com/docs/ko/aix/7.2?topic=management-network-file-system

 

NFS(Network File System)

NFS(Network File System)는 네트워크에 파일을 저장하는 메커니즘입니다. 이 시스템은 사용자가 원격 컴퓨터에 있는 파일 및 디렉토리에 액세스할 수 있고 해당 파일 및 디렉토리가 로컬에 있는 것처

www.ibm.com

nfs(network file system)는 이런 부분을 쉽게 해결할 수 있는 도구입니다.

원격 컴퓨터에 있는 파일,디렉토리에 접근하여 

마치 내 컴퓨터에 있는 것처럼 사용할 수 있게 만들어주는 분산파일시스템입니다.

개념이 어렵다면 쉽게

"원격으로 다른 컴퓨터의 파일을 쓸 수 있는 것"이라고 이해하셔도 됩니다.

저의 경우처럼 시스템프로그래밍 작업을 할 때 유용하게 쓰인다고합니다.


nfs사용방법

 

리눅스를 기준으로 설명을 하겠습니다.

 

1.sudo apt install nfs-kernel-server

먼저, 가장중요한 nfs를 설치합니다.

 

2. sudo vi /etc/exports

외부에 접속할 수 있는 파일시스템을 등록하기 위한 작업입니다.

(/etc디렉토리에 속한 파일이기 때문에

관리자권한으로 vi를 실행해야 파일이 수정가능합니다.)

 

3. 외부와 접속할 디렉토리 접속가능한 외부ip(rw,no_root_squash,no_subtree_check)

해당 파일에 다음과 같은 문구를 추가합니다.

제가 외부에 접속할 디렉토리는

/home/li/nfs

외부 접속을 허용할 ip는 제 라즈베리파이 주소인

192.168.123.101을 했습니다.

뒤에는 (rw,no_root_squash,no_subtree_check)를 추가합니다.

 

4. 외부 디렉토리에 mount

 

저같은 경우에는 라즈베리파이에 mount했습니다.

mkdir /m

mount -t nfs -o nolock 노트북ip:/home/kesl/nfs /m

 

(만약 연결이 잘 안 될 경우,

/etc/exports를 작업한 컴퓨터쪽을 reboot시켜보면 됩니다)

 

실제 결과

 

제 노트북에 저장된 nfs디렉토리 내부입니다.

라즈베리파이에서 마운드 디렉토리인 /m 내부입니다.

똑같죠?

테스트삼아, test.txt라는 문서를 만들었습니다.

라즈베리파이에서도 해당 파일을 볼 수 있었습니다. 

라즈베리파이에서 해당 문서를 수정했습니다.

노트북에서 아까 cat test.txt한 후에 다시 해봤습니다.

일부로 결과를 보기위해 clear를 시키지 않았습니다.

라즈베리에서 수정한 내용을 볼 수 있었습니다.

 

하나 꿀팁

mount명령어를 직업 입력하기 귀찮으실겁니다.

그럴때는 지금처럼 shell script파일을 만드는 방법이 있습니다.

저는 해당 파일을 만들어놔서

./mou.sh 명령어만 입력해서 라즈베리파이를 킨 후에 바로 마운트를 합니다.

(shell script는 유용하게 써먹을 수 있는 부분이 많기 때문에,

가볍게 사용하는 방법 익혀두면 좋습니다)

https://engineer-mole.tistory.com/200

728x90

관련글 더보기

댓글 영역