티스토리 뷰

안녕하세요.

신랑 각시의 신랑 입니다.


오늘은 일하다가, 계속 반복해서 특정 파일을 sftp 로 복사하다가 지쳐서 one command 로 파일을 옮기도록 했습니다.


처음에는 몇 번만 반복하면 될 것 같아서 수 작업을 했는데요, 몇 번이 점점 많아져서 one command 로 정리하게 되었습니다.


상황)

  • 서버 1 ( linux 서버 ) 에서 서버 2 ( linux 서버 ) 로 파일을 복사해야 했습니다.
  1. 서버 1 에서 서버 2로 sftp 로 접속한다. ( ID / PW 입력 )
  2. 서버 2의 특정 위치로 이동한다. ( cd 명령 입력 )
  3. put 명령으로 파일 업데이트
  4. exit 명령으로 sftp 종료

계속 반복되다 보니까, 이것도 일이여서 힘들었습니다.

제안)

1. 서버1 에서 서버2 로 로그인 ( ID / PW 입력 ) 절차 없이 접속할 수 있도록 하자.

  1. 서버1# ssh-keygen -t rsa
  2. 서버1# Enter file in which to save the key  :  <= 엔터 입력
  3. 서버1# Enter passphrase : <= 엔터 입력
  4. 서버1# Enter same passphrase again : <= 엔터 입력
  5. 생성된 pub 파일을 서버2로 옮기기
    1. 서버2# cd $HOME
    2. 서버2# mkdir .ssh
    3. 서버1# cat ~/.ssh/id_rsa.pub | ssh [서버2 계정]@[서버2 IP] "cat >> ./ssh/authorized_keys"
  F. sftp 테스트 해 보기
      I. 서버1# sftp [서버2계정]@[서버2 IP]  <= 엔터 입력
      II. ID / PW 없이 로그인 성공 확인

  # 제 경우에는 특별히 보안적인 부분은 고려하지 않았기 때문에 엔터를 입력하여 넘어갔습니다.
  # 이 부분은 SSH Key 만들기로 검색해 보시면 많이 도움을 받을 수 있습니다.


2. 간단한 스크립트를 만들어서, 스크립트를 실행하면 파일이 복사되도록 하자.

  A. 스크립트 만들기

vi update.sh
#! /bin/sh

sftp [서버2 계정]@[서버2 IP]  << END_SCRIPT
    cd ~/data
    put ~/data/ABC.txt
    bye
END_SCRIPT


3. 이제 사용해 보자.

sh update.sh 하면 서버1 ( 로컬 ) 에 있던 ABC.txt 파일을 서버2 (원격) 의 ~/data 디렉토리로 쏙 업데이트 됩니다.

 


댓글