티스토리 뷰



특정 서버에 자동으로 파일을 업로드하거나 서버에 있는 파일을 자동으로 다운로드하는 하는 일을 해야 하는 경우가 있습니다. 그것도 매일 혹은 주기적으로 반복해서 하는 작업이라면 실행 명령 하나로 접속, 로그인, 파일전송, 연결 해제 과정을 일괄적으로 실행할 수 있다면 업무 효율은 더욱 높아질 수 있을 것입니다. 리눅스나 유닉스 환경은 워낙 스크립트를 활용한 작업이 일반화되어 있어서 간편하지만 윈도우 환경에서는 약간의 준비가 필요합니다. 서버가 단순 FTP 서버인 경우에는 윈도우의 내장 FTP 클라이언트를 사용하고 서버가 SSH를 통한 보안 연결만을 지원하는 경우에는 PSFTP를 사용하여 자동 파일 전송하기를 사용하면 됩니다.


■ 일반 FTP


서버가 일반적인 FTP 서비스를 제공하는 경우에는 윈도우 자체적으로 제공하는 ftp 도구를 사용해서 자동 파일 전송을 수행할 수 있습니다. 윈도우+R키로 "cmd"를 입력해서 콘솔창에서 "ftp /?"를 입력하면 아래의 그림과 같은 옵션을 확인할 수 있습니다.



ftp 명령을 활용한 자동 파일 전송을 위해서는 -s 옵션으로 지정하는 스크립트 파일과 서버의 주소를 입력할 host입니다. FTP 서버에 접속한 다음 콘솔창에서 수작업으로 입력할 사용자 아이디와 비밀번호, 그리고 파일 전송과 관련한 명령을 아래의 그림과 같이 텍스트 파일에 한줄에 한 명령씩 담습니다.




스크립트 파일의 첫 두줄에는 사용자 아이디와 비밀번호를 차례로 입력하고 끝줄에는 FTP 종료 명령인 "bye"를 입력합니다. 파일 다운로드는 "get 파일명", 업로드는 "put 파일명"을 사용하면 되고 여러 파일에 대한 전송은 mget, mput 명령을 사용하면 됩니다. 원격 디렉토리 이동은 "cd 디렉토리", 로컬 디렉토리 이동은 "lcd 디렉토리"의 형태로 사용할 수 있습니다.

스크립트 파일이 준비되었으면 "ftp -s:스크립트 파일명 -i 서버주소"로 명령을 입력하면 자동으로 파일 전송을 수행할 수 있습니다. 아래의 그림은 위의 스크립트 예제를 수행한 결과입니다. -i 옵션을 추가한 이유는 mget 명령에서 파일을 전송할지 물어보는데 답변없이 진행하라는 옵션입니다.



위의 그림을 보면 밑줄친 부분에 스크립트 파일에서 입력한 FTP 명령들을 확인할 수 있습니다.


■ SFTP


서버에서 FTP 서비스를 제공하지 않고 SSH 서비스만 제공하는 경우에는 FTP 클라이언트로는 파일 전송을 할 수 없고 SSH 프로토콜을 통해서 파일을 전송하는 SFTP(Secure FTP) 클라이언트가 필요합니다.(대다수 서버호스팅이서 이러한 형태로 서비스 합니다) 대표적인 SFTP 클라이언트는 PSFTP입니다. 오픈 소스인 PSFTP의 라이선스가 MIT 라이선스로 어떤 형태로 코드를 가져다 쓰는 것도 허용하기 때문에 파일질라에서도 내부적으로 PSFTP 코드를 가져다 사용하고 있습니다.

PSFTP는 http://the.earth.li/~sgtatham/putty/latest/x86/psftp.exe에서 간단하게 실행파일을 다운로드 받을 수 있습니다. 설치 프로그램 없이 0.3MB의 작은 실행 프로그램 하나를 다운로드 하므로 적절한 작업 폴더에 놓고 사용하시면 됩니다. PSFTP의 실행 옵션은 아래의 그림과 같습니다.(윈도우 콘솔창에서 실행)



주목해야할 옵션은 아이디와 비밀번호를 전달할 -l, -pw옵션과 윈도우 ftp의 -s옵션 처럼 스크립트 파일을 전달할 -b옵션 입니다. 스크립트 작성은 위에서 언급한 윈도우 ftp 도구의 스크립트와 유사하지만 첫 두줄에 아이디와 비밀번호를 입력하는 것을 제외하면 됩니다.



위의 스크립트 예제는 서버에 접속해서 웹서버의 접속 로그와 에러 로그를 자동으로 내려받는 스크립트입니다. 스크립트가 준비되었으면 "psftp -b 스크립트 파일명 -l 사용자아이디 -pw 비밀번호 호스트주소"의 형태로 입력하면 됩니다. 예제에서 -v를 추가한 것은 실행 과정을 살펴 보기 위함이므로 제외하셔도 됩니다. 아래의 그림은 예제 스크립트의 실행 결과입니다.





■ 배치 파일 만들기


위에서 언급한 FTP, SFTP 전송 명령을 배치파일(Batch file, *.bat)로 작성해 놓으면 더욱 편리하게 파일 전송 작업을 자동화 할 수 있습니다. 그런데 주기적인 파일 전송의 경우에 대부분 년월일과 같은 내용이 파일명에 반영되므로 이런 경우에는 폴더 전체를 전송하거나 아니면 스크립트에 년월일을 반영하여 전송하는 것으로 해결할 수 있습니다. 아래의 그림은 년월일을 반영한 스크립트 파일을 먼저 생성하고 생성한 스크립트를 바탕으로 자동으로 파일 전송을 수행하는 배치 파일 예제입니다.



배치 파일 끝에 있는 psftp 명령으로 위의 예제는 SFTP 파일 전송을 수행하는 스크립트를 기반으로 함을 쉽게 확인할 수 있습니다. echo 도스 명령은 다음에 있는 내용을 화면에 출력하는 것인데 ">" 명령으로 ">" 다음에 기술한 파일에 화면에 담길 내용을 저장하고 ">>" 명령으로 파일 뒤에 내용을 추가하는 형식으로 파일 전송을 위한 스크립트를 생성합니다. "%date:~0,4%"의 의미는 현재 일자의 0위치 부터 4개의 문자를 추출하는 명령입니다. 결과적으로 서버에서 "backup_20150805.zip"과 같은 파일을 내려받는 스크립트가 만들어 집니다.



■ 작업 예약


끝으로 특정 작업을 자동으로 주기적으로 수행하도록 제어판>예약된작업>예약작업추가 로 등록 합니다.



찾아보기 버튼으로 위의 작업에서 만들어놓은 배치파일(*.bat)을 선택하고 어떤 주기로 실행할지를 선택해 놓으면 PC나 서버 전원을 끄지 않는 한 지속적으로 스크립트를 자동수행하여 서버 자동 백업등을 수행 할 수 있습니다.







댓글
  • 프로필사진 이하늘 혹시 ftp를 이용하여 서버에 접속하여 ~Unix/ch10/local.test 파일을 내컴퓨터의 c:\local\data에 다운로드하는 과정을 순서대로 알려주실수있나요?? 2016.06.12 00:43
  • 프로필사진 야라바 위의 글에서 일반 FTP 사용 방법을 그대로 따라해 보세요. 2016.06.13 09:43 신고
  • 프로필사진 sdad get이 서버로부터 복사해서 가져오는건줄알았더니 아에 서버에있는걸 잘라내기해서 가져오는거였네여 망해따.. 2019.01.14 11:52
  • 프로필사진 rrr 깔끔한 설명 감사합니다. 2019.05.23 11:19
  • 프로필사진 야라바 고맙습니다 2019.05.23 11:46 신고
  • 프로필사진 후니사랑 윈도우 서버에서 FTPS (url연결)로 파일 전송 (매일) 설정하는 방법은 가능할까요?
    가능 하다면 차근차근 설명을 부탁드려도 될까요?
    초보라서 설명해도 잘 모르겟어서요...
    2019.09.02 13:56
  • 프로필사진 야라바 일단 윈도우 서버에서 명령창을 열고 ftp나 psftp를 이용해서(없다면 설치 작업 먼저) 수작업으로 연결, 다운로드, 닫기 하시고 그다음 배치 파일로 자동화하는 작업을 해보세요. 2019.09.02 14:35 신고
  • 프로필사진 산골청년 혹시 이 방법을 맥에서 구현 할 순 없을까요?? 2020.02.22 20:02
  • 프로필사진 야라바 맥에서도 도구가 있을텐데 제가 맥이 없어서...... 2020.02.23 20:26 신고
댓글쓰기 폼