본문 바로가기
로보틱스/라즈베리파이

scp 명령으로 파일 전송하기 [라즈베리파이(Raspberry Pi)]

by J-Build 2020. 8. 31.

이번 포스팅에서는 터미널의 커맨드라인에서 scp(secure copy) 프로그램을 사용해서 라즈베리파이로 파일을 전송하는 방법을 알아볼께요. 원격데스크탑이나 FTP 같은 툴을 사용해도 되긴하는데 커맨드라인 명령어가 익숙해지면 훨씬 빠르고 간단하게 전송을 할 수 있어요. 

 

시작하기 전에

라즈베리파이로 ssh를 사용해서 원격접속 설정을 해두어야 합니다. 다음 글을 참고해서 이 작업을 먼저 완료해주세요. 

scp 명령으로 파일 1개 전송하기

scp는 원격으로 파일을 전송할 수 있게 해주는 프로그램입니다. scp 명령은 전송할 파일 위치와 전송받을 목적지 위치를 명령인자로 넣어주면 됩니다. 즉, 명령의 실행은 아래와 같은 모습을 보이게 됩니다.

 

 

 

scp <source> <destination>

 

먼저 파일을 1개 전송하는 간단한 예제를 해볼께요. 아래 명령은 제 Mac의 다운로드 폴더에있는 사진파일을 라즈베리파(제 라즈베리파이의 IP 주소는 192.168.1.10 입니다)의 홈(Home) 위치로 복사하는 명령입니다. scp 명령의 첫번째 인자로는 전송할 파일 위치(Mac 컴퓨터의 다운로드 폴더에 있는 wip.png파일)이 들어가고 두번째 인자로는 전송받을 목적지 위치(라즈베리파이의 다운로드 폴더)가 들어갑니다.

➜  ~ scp ~/Downloads/wip.png pi@192.168.1.10:/home/pi/Downloads
wip.png              100% 6723   156.4KB/s   00:00

 

저는 ssh연결을 패스워드 없이 하도록 설정해 두었기 때문에 암호입력 없이 파일이 라즈베리파이로 전송되었습니다.(ssh 설정 방법은 여기를 참고하세요) 그럼 정말로 파일이 전송되었는지 라즈베리파이에서 확인해 볼께요. 먼저 제 Mac에서 라즈베리파이로 ssh 접속을 합니다. 

➜  ~ ssh pi@192.168.1.10
Linux raspberrypi 5.4.51-v7+ #1333 SMP Mon Aug 10 16:45:19 BST 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 30 00:42:10 2020
pi@raspberrypi:~ $ 

 

파일이 다운로드 폴더에 잘 들어가 있는지 확인해 볼께요. 

pi@raspberrypi:~ $ ls -al /home/pi/Downloads/wip.png
-rw-r--r-- 1 pi pi 6723 Aug 31 04:35 /home/pi/Downloads/wip.png

 

네, 잘 전송이 된것을 확인할 수 있습니다. 

 

scp 명령으로 폴더 전송하기

아래와 같은 서브폴더를 가진 파일폴더를 라즈베리파이로 전송을 해볼께요.

➜  ~ tree ~/Downloads/files
/Users/jlim/Downloads/files
├── A.J._Buckley.txt
├── A.R._Rahman.txt
├── A_P_J_Abdul_Kalam.txt
├── Aamir_Khan.txt
├── Aaron_Staton.txt
├── Aaron_Tveit.txt
├── Aaron_Yoo.txt
├── Abbie_Cornish.txt
├── Abel_Ferrara.txt
├── Abigail_Breslin.txt
└── sub_folder
    ├── Abel_Ferrara.txt
    └── Abigail_Breslin.txt

1 directory, 12 files

 

폴더 전송 방법도 아주 간단해요. 위에서 사용했던 scp 명령에서 -r 옵션만 추가로 넣어주면 됩니다. 

➜  ~ scp -r ~/Downloads/files pi@192.168.1.10:/home/pi/Downloads
Aaron_Tveit.txt                                                                                            100%  131KB   1.5MB/s   00:00
A_P_J_Abdul_Kalam.txt                                                                                      100%   70KB   1.6MB/s   00:00
.DS_Store                                                                                                  100% 6148   299.7KB/s   00:00
A.J._Buckley.txt                                                                                           100%  134KB 647.0KB/s   00:00
Abbie_Cornish.txt                                                                                          100%  143KB 405.1KB/s   00:00
Abigail_Breslin.txt                                                                                        100%  146KB 765.5KB/s   00:00
A.R._Rahman.txt                                                                                            100%  134KB 368.8KB/s   00:00
Aaron_Yoo.txt                                                                                              100%  131KB   3.0MB/s   00:00
Aaron_Staton.txt                                                                                           100%  135KB   3.0MB/s   00:00
Abel_Ferrara.txt                                                                                           100%  138KB   1.3MB/s   00:00
Abigail_Breslin.txt                                                                                        100%  146KB   2.6MB/s   00:00
Abel_Ferrara.txt                                                                                           100%  138KB   1.4MB/s   00:00
Aamir_Khan.txt                                                                                             100%  130KB   2.0MB/s   00:00

 

 

폴더 전송이 완료되었습니다. 이제 라즈베라파이에서 폴더가 제대로 전송되었는지 확인해 볼께요.

pi@raspberrypi:~ $ tree /home/pi/Downloads/files
/home/pi/Downloads/files
├── Aamir_Khan.txt
├── Aaron_Staton.txt
├── Aaron_Tveit.txt
├── Aaron_Yoo.txt
├── Abbie_Cornish.txt
├── Abel_Ferrara.txt
├── Abigail_Breslin.txt
├── A.J._Buckley.txt
├── A_P_J_Abdul_Kalam.txt
├── A.R._Rahman.txt
└── sub_folder
    ├── Abel_Ferrara.txt
    └── Abigail_Breslin.txt

1 directory, 12 files

 

네, 잘 전송이 되었습니다. 

 

scp 명령으로 라즈베리파이로부터 파일 또는 폴더를 전송 받기

그럼 반대로 라즈베리파이에서 제 컴퓨터로 파일을 전송받을려면 어떻게 해야 할까요? 네, 예상하신것처럼 <source> 와 <destination> 위치를 바꿔주면 됩니다. 즉, 아래 명령은 라즈베리파이에서 이미지 파일 한개를 제 컴퓨터의 Documents 폴더로 전송하는 명령입니다. 

➜  ~ scp pi@192.168.1.10:/home/pi/Downloads/wip.png ~/Documents

 

폴더 전송도 마찬가지로 -r 옵션만 넣어주면 됩니다. 즉, 라즈베리파이에서 제 Mac으로 파일을 전송하기 위해서는 아래와 같이 입력해주면 되겠지요. 

➜  ~ scp -r pi@192.168.1.10:/home/pi/Downloads/files ~/Documents

 

그럼 즐파이 하세요~!

 

 

댓글