티스토리 뷰

etc

자동 업로드 Window Batch Script (SFTP)

keehyun2 2017. 5. 19. 09:00

깃헙링크

개요

운영서버에 자동 배포시스템(maven?,jenkins?)이나 버전관리(svn,git)가 잘 구성되어있으면 이걸 사용할 필요는 없을 것 같습니다. 운영중인 서버를 여러 사람이 소스를 건들고 수정된 소스가 팀원에게 전달이 제대로 안되었을 경우 수정한 소스만 목록화해서 개별 반영할 필요가 있습니다. 저의 경우 보통 파일질라등의 프로그램으로 경로 찾아 들어가서 하나하나 날짜 백업 받아놓고 해당 파일을 upload 하였습니다. 그 수정한 소스파일 갯수가 많아지면 FTP 로 업로드 하는 단순 반복작업이 굉장히 지겨운 일이되고, 실수할까봐 장시간 긴장하게되서 몸도 많이 피곤해집니다. 그래서 업로드 목록을 자동으로 백업받고 업로드 해주는 window cmd 한번 만들어보았습니다.

스크립트 설명

제가 작성한 script 는 filesupload.cmd,filesrestore.cmd 입니다. 미리 만들어 놓은 upload 할 파일 목록을 uploadlist.txt 안에 정리 합니다. 이를 batch script 로 한줄 한줄 읽어서 FTP 상에서 실행할 커맨드를 fileupload.ftp 안에 작성합니다. 마지막에는 psftp.exe 프로그램으로 원격 접속해서 작성된 커맨드들을 실행하고 로그를 남깁니다. (psftp.exe 는 putty 배포하는 사이트에서 내려받았습니다. )

준비

  • build한 war 파일과 운영서버의 소스 구조가 같은지 확인합니다.
  • 변경된 소스 목록을 준비합니다. 버전관리시스템(git 등)을 사용하고 계시면 history 를 보고 쉽게 작성할 수 있습니다. (주의 - 프로젝트 소스와 build 후 경로는 다릅니다. java 확장자도 class 로 변경합니다.)

실행

  1. FTPBATCH 폴더 안에 build 한 war 압축을 풉니다. filelistupload.cmd 안에서 ./WebApp 을 압축 푼 폴더 명으로 변경해준다.

  2. filelist_upload.cmd 안에서 cd /home/keehyun2/WebApp 를 원격 서버의 전체 경로로 수정해줍니다.

  3. filelist_upload.cmd 실행하면 자동 날짜 백업이되면서 업로드됩니다. FTP 로그는 ./logs 폴더 안에 생깁니다. (주의 - CMD 창에서는 FTP 로그 출력 안되고 파일에 기록을 남깁니다. 업로드 이후에 로그 꼭 확인합니다. )

  4. 일괄 복원(백업받은 파일과 이름 바꿔치기)은 files_restore.cmd 를 실행하시면됩니다. - 오늘날짜로 백업받은 파일이 반드시 있어야합니다. ex) file.20170413.bak

문제해결

  1. 접속이 제대로 되는지 확인합니다. 다음과 같은 명령어로 SFTP 접속을 시도해봅니다. psftp.exe -l 아이디 -pw 비밀번호 서버주소
  2. logs 폴더 안에 upload log 를 확인합니다.
  3. putty 의 저장된 세션값을 사용하여 접속을 시도해봄니다. psftp.exe -l 아이디 -pw 비밀번호 -load 세션 서버주소


'etc' 카테고리의 다른 글

Building and Using PJSIP  (0) 2017.09.17
멀티 브라우저 제어(Selenium Grid)  (0) 2017.08.04
웹 테스트 자동화 (Selenium IDE)  (0) 2017.07.26
Regular Expression (ide eclipse 사용)  (0) 2017.06.25
bat 프로그래밍  (0) 2016.04.14
댓글
글 보관함
최근에 올라온 글
Total
Today
Yesterday
링크