맥, 별도의 프로그램 없이 기기간 서버간 파일 공유하기 | scp, sftp

본 글은 별도의 앱(프로그램) 없이 터미널을 활용하여 파일을 공유하는 방법입니다. 구체적으로는 scp와 ftp 커맨드 사용 방법을 기록해두었습니다. 이 방법은 유닉스 와일드카드를 사용하실 수 있기 때문에 GUI 환경에서 복사하는 것보다 효율적으로 다량의 파일을 전송하실 수 있다는 것이 그 장점입니다. 아래 목록을 참고하시어 필요한 정보 확인 바랍니다.

  • UPDATE 2019-03-13 : 이미지 및 문구 수정

맥과 맥 사이 파일 전송 시 사전 조치 사항 | System Preferences > Sharing > Remote Login

  • 접속할 대상의 컴퓨터의 ‘Remote Login’ 옵션을 활성화
  • 접근할 사용자를 추가
  • User@Remote Machine(NEW@192.168.10.7)로 접속

원격 로그인(ssh) 예시 ▼

$ ssh NEW@192.168.10.7
Password:
Last login: Wed Mar 13 17:30:03 2019
2019년 3월 13일 수요일 17시 41분 02초 KST

터미널 메뉴바의 ‘New Remote Connection’에 해당 정보를 등록해두시면 매번 타이핑하지 않으셔도 됩니다.

  • 터미널 메뉴 > Shell > New Remote Connection


scp를 이용한 파일 전송

scp(Secure Copy Protocol)을 활용한 파일 전송 방법입니다. 컴퓨터 A와 컴퓨터 B로 나누어 사용처별로 정리해두었으니 활용하시기 바랍니다.

  • 컴퓨터 A : 내가 지금 사용 중인 컴퓨터(클라이언트)
  • 컴퓨터 B : 접속 대상 컴퓨터(서버)

터미널에서의 파일 공유 모습 ▼

 

컴퓨터 A의 파일을 컴퓨터 B로 전송

내가 사용 중인 맥에 있는 파일을 다른 맥으로 옮기는 방법입니다.

기본 문법 ▼

$ scp <컴퓨터 A의 파일 경로> <remote user>@<remote machine>:<컴퓨터 B 파일 경로>

예시 ▼

$ scp ~/Desktop/example4.txt NEW@192.168.10.7:~/Desktop
The authenticity of host '192.168.10.7 (192.168.10.7)' can't be established.
ECDSA key fingerprint is SHA256:SBU7BhrwsBZ5uIp3Ikdexe5ePDUAQvs68CobmJ9eHw8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.7' (ECDSA) to the list of known hosts.
Password:
example4.txt                                  100%   67    41.6KB/s   00:00

 

컴퓨터 B의 파일을 컴퓨터 A로 전송

대상 맥에 있는 파일을 내 맥으로 가져오는 방법입니다.

기본 문법 ▼

$ scp <remote user>@<remote machine>:<컴퓨터 B의 파일 경로> <컴퓨터 A의 파일 경로>

예시 ▼

$ scp NEW@192.168.10.7:~/Desktop/screen.png ~/Desktop
Password:
screen.png 100% 262KB 4.9MB/s 00:00

 

(아마존) 서버에 있는 파일 내 컴퓨터로 전송

서버와의 통신을 예로 들기 위해 사용 중인 아마존 서버에서 파일을 가져와보았습니다. 보안 연결을 사용하므로 ‘-i [키파일]’을 함께 입력해주셔야 합니다.

$ scp -i [키파일] <remote user>@<remote machine>:<서버의 파일 경로> <내 컴퓨터의 파일 경로>

예시 ▼

$ scp -i dataguide.pem ubuntu@ecX-XX-XXX-XXX-XX.ap-northeast-2.compute.amazonaws.com:/var/www/a.txt ~/Desktop
a.txt

내 파일을 아마존 서버로 복사하는 것은 내 컴퓨터의 파일을 다른 컴퓨터로 복사하는 것처럼 순서만 바꿔주시면 됩니다.

디렉토리 내의 모든 파일 복사하기 ▼

-r : Recursive 옵션을 사용하시면 됩니다.

$ scp -r <remote user>@<remote machine>:<서버의 파일 경로> <내 컴퓨터의 파일 경로>

sftp를 이용하여 파일 전송하기

마찬가지로 Remote Login이 활성화된 상태에서 진행하셔야 합니다. sftp 커맨드가 올바르게 동작하는지는 서버 컴퓨터에서 sftp로 로컬호스트에 접속해보시면 쉽게 확인이 가능합니다.

$ sftp localhost

 

파일 전송 관련 커맨드 ▼

파일 전송과 관련된 간략한 커맨드는 아래와 같습니다. 더 자세한 정보는 링크를 참조 부탁드립니다.

  • get, mget : 서버의 파일을 내 컴퓨터(클라이언트)로 전송 (m: multiple의 약자)
  • put, mput : 내 컴퓨터(클라이언트)의 파일을 서버로 전송 (m: multiple의 약자)
  • ls / dir : 파일 리스트 보기
  • cd : 디렉토리 변경(Change Directory)

 

접속하는 방법

‘사용자@서버 주소’를 이용하여 접속하시면 됩니다.

기본 문법

$ sftp <사용자>@<remote machine>

예시 ▼

$ sftp NEW@192.168.10.7
Password:
Connected to 192.168.10.7.
sftp>

 

서버의 파일 > 내 컴퓨터로 전송

단일 파일 ▼

get [서버 파일 경로] [클라이언트 파일 경로]
sftp> get Earth_Map.png /Users/Travelholics/Desktop
Fetching /Users/NEW/Desktop/Earth_Map.png to /Users/Travelholics/Desktop/Earth_Map.png
/Users/NEW/Desktop/Earth_Map.png     100%   33MB  10.3MB/s   00:03

디렉토리 내 모든 파일(하위 디렉토리 포함) ▼

sftp> mget -r *

 

내 컴퓨터의 파일 서버로 전송

단일 파일 ▼

put [클라이언트 파일 경로] [서버 파일 경로]
sftp> put a.txt

디렉토리 내 모든 파일(하위 디렉토리 포함) ▼

sftp> mput -r *
sftp> mput -r *
Uploading DSC04009.jpg to /Users/NEW/Desktop/DSC04009.jpg
DSC04009.jpg 100% 662KB 9.3MB/s 00:00
Uploading DSC04014.jpg to /Users/NEW/Desktop/DSC04014.jpg
DSC04014.jpg 100% 800KB 10.1MB/s 00:00
Uploading DSC04016.jpg to /Users/NEW/Desktop/DSC04016.jpg
DSC04016.jpg 100% 581KB 9.8MB/s 00:00
Uploading DSC04017.jpg to /Users/NEW/Desktop/DSC04017.jpg
DSC04017.jpg 100% 514KB 10.2MB/s 00:00
Uploading DSC04021.jpg to /Users/NEW/Desktop/DSC04021.jpg
DSC04021.jpg 100% 812KB 9.7MB/s 00:00
Uploading DSC04026 1.jpg to /Users/NEW/Desktop/DSC04026 1.jpg
DSC04026 1.jpg 100% 802KB 8.6MB/s 00:00
Uploading DSC04026.jpg to /Users/NEW/Desktop/DSC04026.jpg
DSC04026.jpg 100% 689KB 9.1MB/s 00:00
Uploading DSC04031.jpg to /Users/NEW/Desktop/DSC04031.jpg
DSC04031.jpg 100% 727KB 10.1MB/s 00:00

ftp를 이용한 파일 전송

* High Sierra에 들어와서 ftp와 telnet이 제거되었으며, sftp 사용이 권유되고 있습니다. 고로 아래 내용은 취소선 처리합니다.

접속 시 ‘s’를 빼는 것 외에는 사용 방법이 sftp와 완전히 동일합니다. 위 sftp 문단을 참고 바랍니다.

$ ftp <remote machine>

서버 열기 ▼

$sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist

서버 닫기 ▼

sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist

예시 ▼

$ ftp localhost
Trying ::1...
Connected to localhost.
220 ::1 FTP server (tnftpd 20100324+GSSAPI) ready.
Name (localhost:Travelholics):
331 User Travelholics accepted, provide password.
Password:
230 User Travelholics logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

이상입니다.

댓글 남기기