생물정보학/Linux

scp 를 이용한 리눅스 서버간 파일 전송

케이든 2014. 11. 6. 11:26

출처 : http://blog.nice2seeyou.com/mike/235

호스팅 서버를 옮겨야 할 때가 오면 기존 서버에 있는 파일들을 모두 새 서버로 옮겨야 하는데 이게 참 큰 일이죠. 사이트 전체를 tar, gzip 으로 압축해서 여러개의 분할된 압축파일로 만든다음 이파일들을 내 컴퓨터로 다운로드 받은다음, 신규 서버에 다시 업로드, 그리고 나서 해당 디렉토리로 압축을 풀고... 이러다 보면 구 서버와 신규 서버의 계정 아이디가 같지 않을 경우 권한 설정에 또 문제가 생기고... ㅋ_@

scp 로 서버와 서버간에 cp 명령을 쓰듯이 파일을 전송해 보세요.

scp -<옵션> [보낼파일] [받는서버 계정 아이디]@[받는서버 주소]:[받을 위치 절대 경로]

옵션:
     - r  = recursive 하위 폴더 포함 모두 복사
     - p = preserve 권한및 속성 유지
     - C = compression 압축

// 현재 접속되어 있는 서버의 public 폴더의 파일을 모두 원격 서버로 전송하기:
$ scp -rpC /home/홍길동/public_html/*  ID@server:/home/new_id/public



// 현재 접속되어 있는 서버의 경로로 원격 서버의 publicl 폴더의 php 파일 모두 복사 해오기:

$ scp -rpC ID@server:~/public/*.php  ./



혹시 전송 시간이 길어진다거나 파일전송이 다 끝나기 전에 자리를 떠야할 일이 있을경우에는 nohup 명령과 같이 scp 를 써주면 전송중에 접속을 끊거나 로그아웃 해도 전송이 끊기지 않습니다. scp 명령 끝에 &(엠퍼센드) 를 넣어주는 것도 있겠지요.

$ nohup scp -rpC ./*  원격서버ID@원격서버주소:~/public &


위와 같이 하면 지금 경로 및 이하 폴더의 모든 파일들이 원격서버의 "원격서버ID" 계정의 public 폴더로 모두 복사 됩니다. 엔터를 치고 나면 바로 커서가 나타나서 로그아웃하거나 터미널 연결을 끊어도 해당 작업이 모두 마치기 전까지 파일전송은 계속 진행됩니다.

오늘 내게 유용했던 것 처럼 누군가에게도 도움이 되었음 하는 생각에 올립니다. ^^;