다양한 이유로 원격에 있는 서버로 파일을 전송해야할 필요성이 있을 것입니다. 그럴 때 데이터를 주고받을 수 있는 리눅스 명령어 중 하나인 scp에 대해서 소개도 해드리고 개인적으로 하는방법에대해서 기록도 남길겸 적어보려고 합니다.
우선 scp는 ssh 원격 접속 프로토콜을 기반으로 한 SecureCopy의 약자라고 합니다. 원격 서버에있는 파일을 가져오거나 전송할 때 사용하는 파일 전송 프로토콜입니다.
네트워크가 연결되어 있는 환경에서 ssh와 동일하게 22번 포트를 사용하여 파일을 주고받기 때문에 보안 관점에서도 안정된 프로토콜이라고 합니다.
전송할 때와 받을 때를 구분지어 설명하겠습니다.
1. 로컬PC(windows) → 원격지(linux서버) 로 파일 전송하는 방법
- 단일 파일을 보내는 방법
scp [옵션] [파일명] [원격지_id]@[원격지_ip]:[받는위치]
예시)
1번
scp -P 1234 D:\justdownload\vmware\snr\jdk-11.0.14.1-jemalloc-signed.tar.gz root@localhost:/home
# localhost 대신 127.0.0.1도 가능하다.
2번
scp [파일명] [원격지_id]@[원격지_ip]:
# 혹은 아래와같이 [원격지_id]@[원격지_ip]: 만 적어도 기본설정 포트22를 통해 원격지 홈디렉토리에 저장한다.
scp D:\justdownload\vmware\snr\jdk-11.0.14.1-jemalloc-signed.tar.gz root1@192.168.31.131:
위의 코드 1번은 linux서버에서 tcp포트를 따로 추가해주고 활성화하여 그 포트번호를 이용해서 전송하는 방식이고 아래 2번코드는 기본설정 22번 포트를 이용해서 파일을 전송하는 방식으로 따로 ' :/home' [받는위치]를 설정해주지않고 빈칸으로 할 시 사용자명(호스트명)root1의 홈 디렉토리에 저장됩니다.
linux서버에서 전송한 파일 확인하는 방법
# linux서버에서 전송한 파일 확인하는 방법
1번 예시코드 리눅스 터미널에서 파일 전송 확인: # ls -1 /home
2번 예시코드 리눅스 터미널에서 파일 전송 확인: # ls -1 /home/[호스트명]
- 여러 파일을 보내는 방법
scp [옵션] [파일명1] [파일명2] [원격지_id]@[원격지_ip]:[받는위치]
위 단일 파일을 보내는 방법과 동일하게 옵션 뒤에 전송하고자 하는 파일명 1,2를 입력합니다.
- 디렉토리(폴더)를 보내는 방법 [가장 많이 사용]
scp -r [옵션] [전송 폴더명] [원격지_id]@[원격지_ip]:[받는위치]
위 단일 파일을 보내는 방법과 동일하지만 옵션을 -r로 부여해주어야 합니다.
추가옵션
옵션 | 설명 | 사용법 |
r | 디렉토리 내 모든 파일/디렉토리 | scp -r |
p (소문자) | 원본 권한 속성 유지 | scp -p |
P (대문자) | 포트 번호 지정 | scp -P [포트번호] |
c | 압축 복사 | scp -c |
v | 과정 출력 복사 | scp -v |
a | 아카이브 모드 복사 | scp -a |
2. 원격지(linux 서버) → 로컬PC(windows) 로 파일 다운받는 방법
- 단일 파일 다운
scp [옵션] [원격지_id]@[원격지_id]:[보내는 위치] [받는 위치]
여기서 서버를 접속할 때 포트번호를 요구한다면 위와 동일하게 -P(대문자)로 포트번호를 넣어주어야 합니다.
- 여러 파일 다운
scp [옵션] [원격지_id]@[원격지_id]:"[파일명1] [파일명2]" [받는 위치]
보낼 때와 비슷하지만, 다운받을 때는 파일을 큰 따옴표 " " 를 사용해 묶어주어야 합니다.
- 디렉토리(폴더)를 다운
scp -r [옵션] [원격지_id]@[원격지_id]:[폴더명] [받는 위치]
※ 작성자는 2023.12.08 linux OS를 새로 설치한 서버에 파일을 전송하기 위해 ftp, scp 이렇게 공부를 하고 까먹지 않도록 기억하기 위해 글을 작성하였습니다. 그런데 그날 알고보니 따로 스위치 같은 것이 구비되어 있지 않고 전부 무선을 사용하여 랜선 연결이 어려운 상황이었으며 그래서 그냥 로컬 PC와 연결하여 putty를 이용하여 ssh로 주고받으려고 하였지만 핑은 문제없이 잘 가는데 이상하게 ssh 연결이 힘들어서 어쩔 수 없이 그냥 usb 메모리를 이용하여 실전에서는 사용해 보지 못했습니다. 그래서 위의 '전송/받기'는 가상화 서버 vmware, virtual box를 이용하여 성공한 예시이므로 실제 (랙장비)서버에서도 문제없이 잘 되는지는 다시 나중에 도전하여 이상이 있으면 수정하겠습니다. 감사합니다.
참고! 개인공부를 위해 남긴 글입니다.
'개인 공부 > 정보 보관함' 카테고리의 다른 글
VirtualBox VM 이미지 불러오기 (0) | 2024.04.09 |
---|---|
요구사항 명세서 작성법 (0) | 2024.01.10 |
WBS 작성법 (2) | 2024.01.09 |
소프트웨어 개발 단계 정리 (1) | 2024.01.09 |
[FTP]윈도우PC에서 linux 서버로 파일 전송 방법 (0) | 2023.12.08 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!