Post

리눅스 scp 명령어

내가보려고만든 리눅스 명령어 모음.

  • 서버 <–> 로컬(내가 쓰고 있는 컴퓨터 바탕화면이라고 생각하면 편함.)

  • 서버 <–> 서버

이렇게 대용량 데이터를 이동시킬 때 사용하는 커맨드 scp

난 remote-ssh에 로그인해서 docker container를 사용하는 환경에서만 경험해봤고, 방법을 기록해둔다.

0) 환경에 따라 다르겠지만, 서버에 lock이 걸려있으므로 remote-ssh 터미널 창에서 sudo chmod 777 . 와 같이 데이터가 저장될 혹은 데이터를 전송해줄 경로에 권한을 부여한 후 아래 작업을 한다.

1) 서버 <–> 로컬

서버에서 로컬로 데이터를 보내나, 반대로 로컬에서 서버로 데이터를 옮기나 방식은 같으므로 하나만 작성한다.

로컬에서 Mac이면 iterm, Windows면 cmd나 Powershell 등 터미널 창을 킨다.

명령어는

1
2
3
4
scp 옵션 이동시킬데이터 서버id@서버IP:/데이터올릴서버경로

ex) 파일 하나를 서버에 올릴 때,
scp -P 7530 file.py user@123.123.125.70:/home/hdd1/directory

주로 사용했던 옵션은 이동시킬 데이터가 단일 파일일 때와 폴더일 때를 구분해주는 ‘-r’ 와 서버의 포트번호를 입력하는 -P 플래그이다. 순서를 유의해야 한다. (안되면 순서 막 바꿔가면서 해보면 됨.)

1
2
3
ex) 폴더를 통재로 서버로 올릴 때,
scp -r -P 7530 folder user@123.123.125.70:/home/hdd1/directory

2) 서버 <–> 서버

개인서버에서 공용으로 공용끼리 등 서버 간에도 데이터를 대량으로 전송할 수 있다. 로컬에서 서버는 마우스로 drag & drop을 하면 되지만 서버끼리는 그게 불가능하고 Ctrl CV도 불가능하기 때문에 scp를 적극 활용한다.

0번에서 언급한 chmod로 양 서버 모두 권한을 부여해준다.

명령어 사용법은 같다. 데이터를 줄, 데이터를 받을 서버 중 아무거나 하나 집어서 remote-ssh에 접속하고 터미널을 킨다음에 1번의 원리대로 명령어를 작성하면 된다.

1
2
ex ) 파일 하나를 다른 서버로 보낼 때,
scp -P 10002 file.py user@123.123.125.70:/home/hdd1/directory
1
2
ex) 폴더를 통재로 다른 서버로 보낼 때,
scp -r -P 10002 folder user@123.123.125.70:/home/hdd1/directory

반대로 다른 서버에서 가져올 때는 순서 바꾼다.

1
scp -P 10002 user@123.123.125.70:/home/hdd1/directory file.py
This post is licensed under CC BY 4.0 by the author.