본문 바로가기
개발/ms window

DOS: FTP 백업 자동 cmd 배치(bat)파일 "1개"로 하기

by 즐기며 2025. 6. 13.

win 7, 10,  11 에서 잘 쓰고 있는 ftp 자동 백업 배치(batch,bat ) 파일 입니다.

제가 하고자 했던거는, 날마다 작업 한거, 자동으로 ftp server 에 올리기 입니다.

ftp 사용법, ftp 서버 등 자세한 설명은 본문에서 하지 않읍니다. 

 

방법은,

1. bat 파일 만들기 

2. win 에서 매일 새벽 3시에  bat 실행 설정 하기

3. 서버 설정 하기

4. 매일 작업한거 올려질 dir 에 복사 하기

5. 컴퓨터 매일 켜놓기  

 

입니다.

==========================================

1. bat 파일 만들기 

 1)  먼저 아래 소스를 e:\_bu\batch\_buNalMaDa.bat  로 저장 (첨부 파일 받으셔도 됩니다) 하셔요.

  > 사실 이게 다 입니다.

;goto begin_bat
prompt off
user bahk wonyong
mput *.*
disconnect
bye

==============================================
bat 실행 설정부: 
> at 01:11 /every:30 E:\_bu\_buNalMaDa.bat
   : 매달 30일 마다
> at 03:03 /every:Su cmd /c E:\_bu\_buNalMaDa.bat
   : 매주 일요일 마다 번
> at 03:03 /every:M,T,W,Th,F,S cmd /c E:\_bu\_buNalMaDa.bat
   : 거의 매일.. 일요일 빼구
> at 03:01 /every:W cmd /c E:\_bu\_buNalMaDa.bat
   : 매주 수요일 마다
> at 03:03 /every:M,T,W,Th,F,S,Su cmd /c E:\_bu\_buNalMaDa.bat
   : 매일..

win 11 에서는 at 이 안되고 scktasks 를 써야 한다.
> schtasks /create /sc daily /tn "bahkBU" /tr "E:\_bu\_buNalMaDa.bat" /st 03:03
==============================================

:begin_bat
e:
cd e:\_bu

c:\windows\system32\ftp -v -n -s:"%~f0" ftp.corea.com&GOTO:end_ftpup

:end_ftpup

pause

 

 

2) 본 스크립트 소스는 2개 부분 입니다.

> ftp 스크립트 ( bye 까지 )

> bat file script ( :begin 부터 )

> bat 실행 설정부 는 실행 되지 않으며, 아래에서 풀이 합니다, 

 

3) batch 파일 부분

> bat script 시작으로 가기

> ftp script 부분 건너 뛰고 batch cmd script 가 있는 부분으로 갑니다.

;goto begin_bat    // ftp 스크립트 부분 건너 뛰고, bat script 시작으로 가기
~
~  ftp 스크립트 부분

:begin_bat
~
~  cmd batch 스크립트 부분

 

> bat cmd 시작

> ftp 로 올릴 파일들이 있는 곳으로 갑니다.

> 여기서는 "e:\bu" 이 올릴 파일들이 있는 곳 입니다.

e:               // e: 드라이브로 가기
cd e:\_bu        // e:\_bu 로 가기

 

> ftp server 접속 및 파일 올리는 곳

c:\windows\system32\ftp -v -n -s:"%~f0" ftp.corea.com&GOTO:end_ftpup  
:end_ftpup

> 첫줄은

- ftp 실행 : c:\windows\system32\ftp

- ftp script 로 자기 자신 파일을 이용 하라 : -s:"%~f0"

- ftp 서버는  "ftp.corea.com" 이다 : 

- ftp 가 끌나면, ":end_ftpup" 로 가라  : &GOTO:end_ftpup

 

> 두번째줄

- ftp 작업 끝나고 갈 곳 지정 :end_ftpup

 

4) ftp 스크립트 부분

prompt off         // 파일 여러개 올릴때(mput 사용) 자꾸 묻지 마라
user bahk wonyong  // 사용자 id 와 password 는 bahk 과 wonyong 이다
mput *.*           // 모든 파일 올려라 
disconnect         // 서버 연결 끊어라
bye                // ftp 프로그램 끝내라

 

5) 뭐 사실 선수는 이정도만 보시면 아실 거 입니다만,

    쓰는김에 좀더 씁니다.

 

2. win 에서 매일 새벽 3시에  bat 실행 설정 하기

> "at" 를 씁니다. win 11 의 경우는 at 이 안되고 "schtasks" 를 씁니다.

> 여기서는 간단히 풀이 합니다, 죄송 하지만 자세한것은 at, schtasks 를 찾어 보셔요

1) at

> at 01:11 /every:30 E:\_bu\_buNalMaDa.bat
	: 매달 30일 마다 1시11분 에
> at 03:03 /every:Su cmd /c E:\_bu\_buNalMaDa.bat
	: 매주 일요일 마다 3시3분에 
> at 03:03 /every:M,T,W,Th,F,S cmd /c E:\_bu\_buNalMaDa.bat
	: 거의 매일.. 일요일 빼구
> at 03:01 /every:W cmd /c E:\_bu\_buNalMaDa.bat
	: 매주 수요일 마다
> at 03:03 /every:M,T,W,Th,F,S,Su cmd /c E:\_bu\_buNalMaDa.bat
	: 매일..

 

2) schtasks

> win7,10 은 at 을 쓴거 같은데, 11은 안된다 하는 군요.

> schtasks /create /sc daily /tn "bahkBU" /tr "E:\_bu\batch\_buNalMaDa.bat" /st 03:03

간단풀이
- /create			: 스케줄 만들어라
- /sc daily			: 날마다 해라  schedule
- /tn "bahkBU"			: 이름은 bahkBU 이다, 맘대로 정하시면 됩니다. task name
- /tr "E:\_bu\_buNalMaDa.bat"	: 실행할 파일은 이거다. task run ?
- /st 03:03			: 오전 3시3분해 해라 start

 

* 저는 지금은 win11 을 사용하여 schtasks 로 하였읍니다. 

   즉 매일 3시 3분에  E:\_bu\batch\_buNalMaDa.bat 을 실행 하라 입니다.

 

 

3. 서버 설정하기

> 저는 서버로 파일질라 FileZilla server 를 이용 하였읍니다.

> 백업용이고, 파일 지워지는거 방지 하기 위하여 Delete 는 뺐읍니다.

 

4. 매일 작업한거 올려질 dir 에 복사 하기

> 날마다 작업 하신것을 "e:\_bu" 에다가 복사하여 놓으셔요.

> 그리고, 배치 파일을 직접 실행 하면, 동작 하는 거 확인 하실수 있읍니다. 

> 작업뒤 서버에 실제 파일들이 올라 가 있는지 확인 하실수 있읍니다.

 

5. 컴퓨터 매일 켜놓기 

> 아침 9시에 출근 해 보면, 모니터에 cmd 창이 떠 있는것을 보실수 있읍니다.

> Permission denied:  이미 올려진 파일들 은 추가로 올리면서 에러 납니다. 상관 없지요

> pause 가 없으면, 실행 끝나고 창 닫어 버리니, 작업을 했는지 안했는지 모르니 있는게 좋읍니다.

 

> 내용 정리하여 메모창으로 옮겼읍니다.

 

> Text 로도 올립니다. 뱀다리 인가 ?

E:\_bu\batch>goto begin_bat
E:\_bu\batch>e:
E:\_bu\batch>cd e:\_bu

e:\_bu>c:\windows\system32\ftp -v -n -s:"E:\_bu\_buNalMaDa.bat" ftp.corea.com  & GOTO:end_ftpup
Please log in with USER and PASS first.
ftp> ;goto begin_bat
올바르지 않은 명령입니다.
ftp> prompt off
대화형 모드 끔 .
ftp> user bahkwy bahk00
ftp> mput *.*
Permission denied
Permission denied
:
:
Permission denied
Permission denied
ftp> disconnect
ftp> bye

e:\_bu>pause
계속하려면 아무 키나 누르십시오 . . .

 

* 첨부

위 파일 첨부 합니다.

_buNalMaDa.bat
0.00MB

 

수고 하셨읍니다. 

 

사실 간단한거 같지만, 큰 기능을 한다고 봅니다.

어렵게 모아 만들었읍니다...

 

도움이 되셨으면, 댓글 부탁합니다. 댓글 하나에 힘이 됩니다.
 
고맙읍니다.