리눅스 / 명령어 / scp
Created 2024-03-03
Last Modified 2024-03-03
scp는 ssh 프로토콜을 이용하여 파일을 송수신하는 명령어이다.
- local → remote
- remote → local
- remote → remote
모두 가능하다.
local → remote
파일 복사
# scp a.txt root@192.168.3.211:/temp/a.txt root@192.168.3.211's password:
- 명령어를 실행한 디렉토리에 있는 a.txt 파일을 192.168.3.211 컴퓨터에 root 계정으로 연결하여 복사한다.
- 원격 컴퓨터에 /temp 디렉토리가 없으면 복사되지 않는다.
- 원격 컴퓨터에 /temp 디렉토리가 있으면 a.txt로 복사된다. a.txt 파일이 이미 있다면 덮어쓴다.
- root 계정의 비밀번호를 입력해야 진행된다.
처음 접속하는 거라면 아래와 같은 메시지가 나올 수 있다. yes 또는 y를 입력하고 진행한다.
The authenticity of host '192.168.3.211 (192.168.3.211)' can't be established. ED25519 key fingerprint is SHA256:CWaawH0/RAuNqbjiXuu4WeYsqo+9JdOJi10uMBuXvl4. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])?
# scp a.txt root@192.168.3.211:/temp
- /temp 디렉토리가 없으면 a.txt 파일이 temp 파일로 복사한다.
- /temp 디렉토리가 있으면 /temp/a.txt 파일로 복사한다.
# scp a.txt root@192.168.3.211:/temp/
- /temp 디렉토리가 없으면 복사되지 않는다.
- /temp 디렉토리가 있으면 /temp/a.txt 파일로 복사한다.
# scp b.txt c.txt root@192.168.3.211:/temp
- 여러 파일을 동시에 복사할 수 있다.
# scp b.txt *.txt root@192.168.3.211:/temp
- 와일드카드 등을 사용할 수 있다.
# scp -P 2000 a.txt root@192.168.3.211:/temp
- ssh 포트가 22가 아니라면 -P 옵션으로 지정할 수 있다.
디렉토리 복사
# scp -r abc root@192.168.3.211:/temp/
- 디렉토리를 복사할 때는 -r 옵션을 붙인다.
- /temp 디렉토리가 없으면 복사되지 않는다.
- /temp 디렉토리가 있으면 /temp/abc로 복사한다.
# scp -r abc root@192.168.3.211:/temp
- /temp 디렉토리가 없으면 /temp 디렉토리를 만들고, 그 안에 abc 디렉토리 안의 파일 등을 복사한다.
- /temp 디렉토리가 있으면 /temp 안에 abc 디렉토리를 복사한다.
remote → local
# scp -r root@192.168.3.211:/temp/abc ./
- 192.168.3.211 컴퓨터에 root 계정으로 연결하여, /temp/abc 디렉토리를 현재 디렉토리로 복사한다.
remote → remote
# scp root@192.168.3.211:/temp/a.txt root@192.168.3.202:/temp/ root@192.168.3.202's password: root@192.168.3.211's password:
- 192.168.3.211에 있는 /temp/a.txt 파일을 192.168.3.202의 /temp 디렉토리에 복사한다.
- 두 서버의 계정 암호를 다 묻는다.