scp(secure copy) 사용법을 정리해 보겠습니다.

 

원격지의 서버들은 모두 공인 IP를 가지지 않는 경우가 많고, 보안 문제로 접속하는 터미널 외에는 직접 연결이 안되는 경우가 대부분입니다. 

 

원격지에 172.31.5.31 ~ 172.31.5.39 까지의 서버들이 있으며, 하나의 공인 IP를 통해 172.31.5.31로 접속할 수 있고, 31번으로 전송한 파일들을 32 ~ 39번 서버들로 복사해야 하는 상황을 가정해 보겠습니다.

 

scp의 기본 사용법은 아래와 같습니다. 

scp [옵션] [[user@]host1:]file1 ... [[user@]host2:]file2

1:1 전송뿐만 아니라 n:n 전송도 지원됩니다. 또한 로컬 파일을 원격지로 보내거나 원격지의 파일을 로컬에 복사할 수 있으며, 원격지의 파일을 다른 원격지로 보낼 수 있습니다. 

 

지정할 수 있는 옵션은 아래와 같습니다.

-P  -P 3010 처럼 원격지의 ssh 포트 번호를 지정할 수 있습니다. 기본값은 22 입니다. 대문자임을 주의하세요.
-r 디렉토리의 하위 폴더, 파일을 모두 복사합니다.
-p 복사할 때 원본 파일의 의 수정/사용 시간, 권한 등이 모두 유지됩니다.
-c 압축 후 복사합니다. 용량이 클 때 사용하세요.
-v 복사되는 과정을 볼 수 있게 정보를 출력합니다.

 

아래 몇 가지 샘플을 통해 살펴보고 마무리 하겠습니다. 원격 포트는 모두 3010이라고 가정하겠습니다.

 

로컬파일을 원격지로 복사

 

로컬에 /tmp/test.tar 이라는 파일을 172.31.5.32 서버(port number 3010)의 /tmp 폴더에 복사합니다.

scp -P 3010 /tmp/test.tar abc@172.31.5.32:/tmp

 

로컬파일들을 원격지로 복사

 

복사할 파일 리스트를 필요한 만큰 나열하면 됩니다.

scp -P 3010 /tmp/test.tar /tmp/test2.tar abc@172.31.5.32:/tmp

 

원격지 파일을 로컬에 복사

 

172.31.5.32 서버(port number 3010)의 /tmp/test.tar 파일을 로컬의 /tmp 라는 폴더에 복사합니다.

scp -P 3010 abc@172.31.5.32:/tmp/test.tar /tmp

 

원격지 파일들을 로컬에 복사

 

원격지의 파일들은 ""로 감싸서 나열하면 됩니다.

 

scp -P 3010 abc@172.31.5.33:"/tmp/test.tar /tmp/test2.tar" /tmp

 

위의 두 예제처럼 -P 옵션은 둘 중 앞에 선언된 원격지의 port로 사용됩니다. 

 

복사할 파일의 원본 위치와 복사될 위치 모두 원격지일 경우 앞에 선언된 원격지의 포트로 인식합니다. 

 

만약 사용되는 포트가 22번이라면 상관없지만 두 원격지 모두 사용하는 포트가 22번이 아닐 때는 앞에 있는 원격지는 -P옵션으로 포트를 지정할 수 있지만 그 다음 원격지부터는 모두 22번으로 인식합니다. 

 

이런 경우에는 ssh_config를 설정하여 해결할 수 있습니다. 상세 내용은 man ssh_config를 통해 확인할 수 있습니다. 

 

아래 예제는 172.31.5.33, 172.31.5.34 서버의 ssh 포트를 3010으로 지정한다고 가정하겠습니다. 

vi ~/.ssh/config  // 기존에 지정한 내용이 없다면 신규 파일을 생성하게 됩니다.

// 파일 내용은 아래와 같이 지정할 수 있습니다.
Host 172.31.5.33
Port 3010

Host 172.31.5.34
Port 3010

 

원격지 파일을 다른 원격지에 복사

 

172.31.5.35 서버(port number 3020)의 /tmp/test.tar 파일을 172.31.5.33 서버의 /tmp 라는 폴더에 복사합니다. 33번의 ssh port는 위와 같이 ssh_config에 지정했다고 가정하겠습니다.

 

scp -P 3020 abc@172.31.5.35:/tmp/test.tar abc@172.31.5.32:/tmp

35번 서버의 포트인 3020을 옵션 P로 지정했으며 32번의 포트는 ssh_config에 정의된 포트를 읽어서 복사합니다. 

 

 

이상입니다. 자주 쓰지 않다보니 할 때마다 검색해서 찾는 저 자신을 보고 한번 정리해야겠다라는 생각이 들더군요. 

 

여러분들에게도 도움이 됬으면 합니다. :)

Linux 64bit OS에서 어떤 라이브러리를 빌드할 때 multilib 관련 에러가 나는 경우가 종종 있습니다.

 

64bit 환경에서 32bit 라이브러리를 빌드할 때 발생하며, 이를 위해 빌드시 multilib 옵션을 활성화해야 합니다.

 

.../cstdlib:41:28: fatal error: bits/c++config.h: 그런 파일이나 디렉터리가 없습니다  
#include <bits/c++config.h>
						   ^ 
compilation terminated.

(* 에러 발생 예)

 

gcc 설치할 때 --disable-multilib 옵션(--enable-multilib가 기본 옵션)으로 설정했거나 gcc 버전이 오래된 경우일 때 발생할 수 있습니다.

 

gcc를 최신 버전으로 업그레이드 하거나 관련 패키지 중 x86_64라는 이름이 아닌 i686으로 설치된 것들이 있는지 살펴보고 삭제 후 x86_64 패키지로 재설치하는 방법도 있습니다.

'개발 이야기 > C-C++' 카테고리의 다른 글

gcc 빌드 시 multilib package 관련 에러  (0) 2020.02.05
jsoncpp 사용법 정리  (3) 2018.07.05

CentOS 기준.. 매번 사용하지 않는 것들이라 기록해둔다.



OS 버전 확인

cat /etc/redhat-release(el7 ~)   or cat /etc/issue(~el6)


커널 버전 확인

cat /proc/version


Kernel bits 확인

getconf WORD_BIT


cpu 정보 확인 

cat /proc/cpuinfo

실 CPU 수 : grep ^processor /proc/cpuinfo | wc -l

CPU당 코어 수 : grep 'cpu cores' /proc/cpuinfo | tail -1


메모리 

cat /proc/meminfo


디스크 용량 확인 

df -h

'개발 이야기 > linux' 카테고리의 다른 글

악성 데몬 찾고 해결하는 방법  (0) 2020.05.12
ssh key 충돌 해결방법  (0) 2019.07.03
시스템 기본 사양 확인하기  (0) 2018.08.30
메모리 사용양 측정 - mpstat  (1) 2015.04.10
apache2에서 perl 설정하기  (0) 2015.02.05
ubuntu apt-get source generate  (0) 2015.02.03

EC2 대시보드 -> 인스턴스 -> 인스턴스 시작 


여기서는 Amazon Linux AMI를 선택하려 한다. 




인스턴스 유형은 t2.micro (역시 프리 티어 사용 가능 ) 선택 후 "검토 및 시작" 버튼. 


 (인스턴스 구성 및 스토리지 추가 등이 필요하면 각 상세 항목을 설정할 수 있다. 각 항목은 추후 필요할 때 다시 설정할 예정이니 여기서는 넘어가자.)



"시작" 버튼을 누르면 키페어에 대한 질의가 나온다. "새 키 페어 생성"을 눌러보자.


키 페어 이름을 넣은 후 "키 페어 다운로드"를 해서 pem 파일을 만들어두자. 원격 제어를 위해 접근하려면 꼭 필요하다. 





그리고 인스턴스를 시작하면 생성 후 가동된다. 


이제 터미널에서 접속하는 과정을 보자. 


일단 다운받은 pem 파일을 원하는 위치에 놓고 터미널에서 해당 폴더로 이동한다.


그리고 pem 파일 권한에 읽기 권한을 아래와 같이 부여한다.


chmod 400 yourfilename.pem



그리고 터미널에서 ssh로 바로 접속해보자.


ssh -i yourfilename.pem ec2-user@yourec2domain


이제 EC2로 바로 접속할 수 있다. 


참고로 EC2 인스턴스를 활성화 시킨 후 재부팅 등이 이루어지면 IP와 도메인이 변경된다. 고정 IP를 할당하자면 비용이 추가되니 필요에 따라 선택이 필요하다. 









없으면 인스톨.. 


apt-get install mpstat


기본으로 mpstat를 입력하면 아래와 같은 결과가 출력됨.


sudo mpstat


Linux 3.13.0-45-generic (rs2mapp1)      04/10/2015      _x86_64_        (2 CPU)


CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle

all       0.02    0.01      0.00   0.02     0.00    0.00    0.00    0.00      0.00    99.95


이걸 코더별로 사용률을 보려면 아래와 같이 실행하면 된다. 

sudo mpstat -P ALL


01:54:52 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle

01:54:52 PM  all    0.02    0.01    0.00    0.02    0.00    0.00    0.00    0.00    0.00   99.95

01:54:52 PM    0    0.02    0.01    0.00    0.03    0.00    0.00    0.00    0.00    0.00   99.94

01:54:52 PM    1    0.01    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00   99.97


각 CPU에 대한 내용만 보고 싶다면..

sudo mpstat -P ALL | tail -2 (cpu가 2개니까 밑에서 두줄만 보겠다는 필터 적용)

01:56:08 PM    0    0.02    0.01    0.00    0.03    0.00    0.00    0.00    0.00    0.00   99.94
01:56:08 PM    1    0.01    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00   99.97

특정 시간 간격으로 계속 나오게 하고 싶다면

sudo mpstat -P ALL 5 (5초 간격으로 계속 출력하기.)


예전에 한참 사용할 땐 알겠는데, 너무 오랜동안 사용 안하니 당췌 기억이 안나네. 


찾아서 정리해둔 내용.

  1. 홈짱 2015.11.19 15:17

    고맙습니다. 덕분에 좋은 내용 알아가네요.

현재 커널 버전 확인은 " uname -a" 로 확인 가능




업데이트 파일은 여기에 다 모여있음


http://kernel.ubuntu.com/~kernel-ppa/mainline


들어가면 각 버전별로 폴더가 있으며 rc는 완벽한 버전이 아니므로 가능한 설치하지 말 것!


세가지 파일을 받아야 하는데.. 64bit의 경우 wget (http://full path)으로 아래 세 가지 파일을 다운 받는다. 


linux-headers-XXX-XXXX-generic_XXX-XXXXX_amd64.deb


linux-headers-xxx-xxxx-xxxxx_all.deb


linux-image-xxx-xxxx-generic_xxxxx_amd64.deb



파일을 다 받았다면 아래 커멘드를 입력한다.


sudo dpkg -i *.deb



(* 참고1. dpkg = http://ko.wikipedia.org/wiki/Dpkg )

(* 참고2. 패치 파일은 generic 과 lowlatency 두가지가 업데이트 되어 있는데, 커널 빌드 시 특별히 선택한 기억이 없다면 generic이다. 이에 대한 내용은 https://help.ubuntu.com/community/UbuntuStudio/RealTimeKernel 을 참고할 것!)





(OS : Ububtu 14.04 Server)


현재 설정된 내용 보기

iptables -L 


현재 룰을 지정한 이름의 파일로 저장하기 

iptables-save  > 특정이름( ex 2015.01.01.rule)


저장한 룰로 복원하기

iptables-restore < 백업했던 롤 파일 이름


직접 iptables 파일 편집하기

iptables-save로 rule을 복사한다.

복사한 파일을 수정한다.

iptables-restore로 복원한다.




http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/

+ Recent posts