리눅스 서버간 scp로 파일 복사하기
리눅스 서버간에 파일을 업로드하는 방법은 ftp, rsync 도 있겠지만 ssh 를 이용하는 scp (secure copy) 도 있다.
먼저 ssh-keygen 으로 인증키를 만들어서 원격지 서버에 넣어 놓아야 scp 로 파일 복사시 암호를 더 이상 묻지 않는다.
rsync 와 거의 유사해서 백업용으로 사용이 가능하다.
▶ 인증키 만들기 (ssh-keygen -t rsa or dsa)
[root@conoha ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
62:1b:92:d1:58:21:4a:b1:36:86:62:1f:71:90:e0:ec root@conoha.ivps.kr
The key's randomart image is:
+--[ RSA 2048]----+
| .+++.o. |
|oo +o= |
|o+*.o . |
|+o...o |
| E .o + S |
| o + |
| . |
| |
| |
+-----------------+
[root@conoha ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
4c:15:b1:5c:00:cc:0a:0d:60:24:0d:8e:75:94:81:fa root@conoha.ivps.kr
The key's randomart image is:
+--[ DSA 1024]----+
|o+=+== o..=+. |
|o+o.o . oo o |
|.o . .. o |
|. .o |
| . S |
| E |
| |
| |
| |
+-----------------+
암호화 방식의 차이니깐 둘 중에 마음에 드는 것을 선택하면 된다.
이제 인증키를 원격서버에 업로드 하자. ( 여러개 다수의 서버라면 여기를 참고 https://ivps.tistory.com/79 )
[root@conoha ~]# scp ./.ssh/id_rsa.pub root@vultr.ivps.kr:~/.ssh/authorized_keys
ssh: connect to host vultr.ivps.kr port 22: Connection refused
lost connection
You have new mail in /var/spool/mail/root
ssh 포트가 맞지 않아서 실패하였다.
포트 옵션을 주고 다시 실행
[root@conoha ~]# scp -P10022 ./.ssh/id_rsa.pub root@vultr.ivps.kr:~/.ssh/authorized_keys
root@vultr.ivps.kr's password:
id_rsa.pub 100% 398 0.4KB/s 00:00
[root@conoha ~]# scp -P10022 ./.ssh/id_rsa.pub root@vultr.ivps.kr:~/.ssh/authorized_keys
id_rsa.pub 100% 398 0.4KB/s 00:00
첫번째는 인증키가 원격지 서버에 아직 없으므로 패스워드를 물어본다.
두번재는 인증키가 이미 올라간 상태라서 비밀번호를 묻지 않고 바로 복사가 되었다.
▶ scp 옵션
-C 전송시 파일을 압축해서 전송한다.
-l 전송속도 옵션이다. 단위는 Kbit/s
-P 포트지정 옵션이다. 22번 포트는 생략하여도 된다.
-p 원본 파일과 시간을 동일하게 복사한다.
-q 전송진행 상태를 안보여준다.
-r 하위 디렉토리까지 같이 복사하다.
-v 디버깅메시지를 보여준다. 그러나 너무 분잡하다.
▶ scp 복사 예제
테스트용 디렉토리와 100MByte 파일 생성
[root@conoha ~]# dd if=/dev/zero of=./testdir/subdir/100M.bin bs=100M count=1
1+0 records in
1+0 records out
104857600 bytes (105 MB) copied, 0.227941 s, 460 MB/s
30Mbps 속도로 원격지 서버에 testdir 디렉토리를 전송 (속도가 제어되어서 전송되었다.)
[root@conoha ~]# scp -P10022 -l30000 -pr ./testdir/ root@vultr.ivps.kr:~/testdir/
100M.bin 100% 100MB 3.7MB/s 00:27
속도제한 없이 원격지 서버에 전송 (160Mbps 속도가 나온다.)
[root@conoha ~]# scp -P10022 -pr ./testdir/ root@vultr.ivps.kr:~/testdir/
100M.bin 100% 100MB 20.0MB/s 00:05
압축해서 원격지 서버에 전송 (800Mbps 속도가 나왔다. 더미파일이라서 압축효과가 있다.)
[root@conoha ~]# scp -P10022 -Cpr ./testdir root@vultr.ivps.kr:~/
100M.bin 100% 100MB 100.0MB/s 00:01
이번엔 원서버에 원본 디렉토리를 지우고
[root@conoha ~]# rm -rf testdir
원격지 서버의 testdir 디렉토리를 다운로드
[root@conoha ~]# scp -P10022 -Cpr root@vultr.ivps.kr:~/testdir ~/
100M.bin 100% 100MB 50.0MB/s 00:02
[root@conoha ~]# scp -P10022 -pr root@vultr.ivps.kr:~/testdir ~/
100M.bin 100% 100MB 20.0MB/s 00:05
[root@conoha ~]# ls -l ~/testdir/subdir/
합계 102400
-rw-r--r-- 1 root root 104857600 5월 27 11:53 100M.bin
rsync 의 --delete 옵션이 scp 에는 없는거 빼고는 별 차이가 없는 것 같다.
물론 rsync 는 한번 복사 이후에는 변경된 파일만 백업이 이뤄지는 아주 큰 매력이 있긴하다.
'LINUX' 카테고리의 다른 글
SSH 인증키 원격지 서버에 올려서 암호입력 없이 접속하기 (0) | 2016.05.30 |
---|---|
리눅스 sftp 암호입력 없이 사용하는 방법 (0) | 2016.05.28 |
CentOS 7.x 호스트네임 변경하기 (0) | 2016.05.27 |
리눅스 아파치 서버가 살아있는지 체크하는 쉘스크립트 (0) | 2016.05.26 |
아파치 IP 로 접속시 차단 방법 (2) | 2016.05.26 |