서버 간 파일 이동, 로컬과 서버간 파일이동 (scp)

j___의 블로그·2022년 6월 30일
0

우분투 한걸음

목록 보기
4/4
post-thumbnail

아주 간단한 명령어로 서버간 파일을 이동하거나 로컬과 서버간 파일을 이동할 수 있습니다.

(파일질라로 다운받고 올리고 하는 방법으로 하지 맙시다. 파일질라보다 이 방법이 더 빠르니 이 방법을 애용하면 좋을 듯합니다.)

파일 이동의 기본 원리

scp [-조건] [이동 출발하는 곳] [이동 도착하는 곳]

순서로 적어 주는 것이 기본 원리입니다.

여러 케이스를 통해 조금 더 자세하게 해보도록 하겠습니다.

다음 명령어는 리눅스의 기본적인 명령어 ( ./ ../ 등을s알고 있다는 전제 하에 적성되었습니다)

From 서버 —> To 서버

서버에서 서버로 옮기는 것은 OS와 상관없이 할 수 있습니다.

우선 파일이 있는 서버에 접속합니다.

A 서버의 hello라는 폴더 안에 "temp.png"라는 파일을

B 서버의 root계정의 hello 폴더 안으로 옮기는 상황을 가정해 보겠습니다.

위의 상황이라면 A서버를 터미널 혹은 putty를 통해 접속하여 hello라는 폴더로 들어갑니다.

해당 폴더에서 아래의 명령어를 수행합니다.

scp -P [포트번호] ./temp.png [계정이름]@[B서버주소]:/home/root/ 

본인이 필요한 방법으로 해당 코드를 변형하여 사용할 수 있습니다.

하나씩 분석해보자면 scp는 screet copy로 파일을 복사를 하는 코드입니다.

-P는 포트를 설정하는 조건입니다. 원하는 포트번호를 설정합니다.

그 후 파일을 지정합니다.

띄어쓰기 후 이동하려는 서버의 [아이디@서버주소:/서버내의 이동하려는 디렉토리]

이 세 가지를 쓰면 됩니다.

폴더도 이동시킬 수 있습니다. 동일한 조건에서 temp.png라는 파일이 아니라 temp라는 폴더를 옮긴다고 가정하면 아래와 같이 작정해주면 됩니다.

scp -r -P [포트번호] ./temp [계정이름]@[B서버주소]:/home/root/ 

다 동일하고 -r 조건을 추가해 줍니다.

scp -r -P 10022

이는 폴더를 이동한다는 의미입니다.

From 로컬 —> To 서버

이 명령어부터는 맥OS의 터미널 환경에서는 실행을 확인하였습니다.

로컬에서 터미널을 실행합니다. 그리고 서버에는 접속하지 않은 상태로 시작합니다.

서버에 로컬에 있는 temp.png라는 파일을 업로드한다고 전제합니다.

우선 temp.png가 있는 폴더로 이동하거나 경로를 기억합니다.

그 후 아래의 코드를 수행합니다.

scp -P [포트번호] ./temp.png [서버아이디]@[옮기고 싶은 서버 주소]:[이동하고 싶은 위치]

서버간 이동과 원리가 100% 동일합니다.

폴더를 이동하는 것도 위에 서버 간 이동방법을 동일하게 활용할 수 있습니다.

From 서버 —> To 로컬

이것 역시 터미널을 실행합니다. 서버에는 접속하지 않은 상태로 시작합니다.

옮기고 싶은 디렉토리를 기억하거나 해당 디렉토리로 이동합니다. 아래 코드는 이동하고 싶은 디렉토리에 터미널을 이동한 상태를 가정합니다.

서버에 있는 temp.png를 로컬로 이동한다고 가정합니다.

그 후 아래의 명령어를 수행합니다.

scp -P [포트번호] [서버아이디]@[옮기고 싶은 서버 주소]:[이동하고 싶은 파일 주소] ./

위의 문서를 모두 읽으셨다면 쉽게 이해하시리라 생각됩니다.

이동을 출발하는 곳의 디렉토리/파일or폴더명을 앞에 적고 이동하려는 로컬의 장소를 쳐주면 됩니다.

파일 옮기기 꿀팁!

1. 전체파일, 특정 조건에 해당하는 것 전체 옮기기

폴더를 다 옮기기가 아니라 특정조건에 있는 모든 파일을 옮기고 싶을 때가 있습니다.

그럴때는 아래의 명령어를 통해 쉽게 이동할 수 있습니다.

예를 들어 확장자가 pdf인 모든 파일을 옮기고 싶다고 할때, 이동하는 것을 출발하는 곳에

./*.pdf

를 써주면 됩니다. *는 전부라는 의미입니다.

*.pdf를 써주게 되면 .pdf인 모든 파일을 옮기라는 뜻입니다.

./subtypes*

이런식으로 subtypes로 시작하는 모든 파일을 옮기는 등으로 활용할 수 있습니다.

2. 이동하려는 파일이 많고 클 때

서버간 이동 시에 파일이 너무 거대한 경우 옮기는데에 많은 시간이 소비됩니다.

명령어를 터미널이나 푸티를 통해 넣고 기다리면 서버가 알아서 일을 수행해줍니다.

보통은 에러가 잘 안나지만, 만약에 화면이 꺼지거나 프로그램이 멈추면 파일이동도 멈출때가 있습니다.

그럴때를 대비하여 screen을 통해서 다른 창을 만들고 그 안에서 scp명령어를 수행한 후 빠져나오면

screen내부에서 파일이동을 수행하므로 터미널이 꺼지거나, 화면이 꺼져도 이상없이 파일이 이동됩니다.

스크린 이용방법은 제 게시글을 참고해주세요.

profile
💧 Constant dropping wears away a stone. 🪨

0개의 댓글