Skip to content
WindowsTip
2015.11.12 02:53

DOS Batch - FTP Scripts 배치파일

조회 수 1293 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


DOS Batch - FTP Scripts


File Transfer with FTP, One-File Solutions.



TOP
2008-01-01

Classic FTP - Executing a FTP script

Description:

The FTP command support the "-s:ftpscript.txt" option. The FTP commands listed in ftpscript.txt will automatically run after FTP starts. The FTP command can be started from a batch file.

Example:
  • FTP -v -i -s:ftpscript.txt
See also command line help: "C:>ftp -?"
Script:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
open example.com
username
password
!:--- FTP commands below here ---
lcd c:\MyLocalDirectory
cd  public_html/MyRemoteDirectory
binary
mput "*.*"
disconnect
bye
Script Output:
 DOS Script Output
ftp> open example.com
User (Username:(none)):

ftp> !:--- FTP commands below here ---
ftp> lcd c:\MyLocalDirectory
Local directory now c:\MyLocalDirectory.
ftp> cd  public_html/MyRemoteDirectory
ftp> binary
ftp> !: mput "*.*"
ftp> disconnect
ftp> bye

TOP
2008-01-01

FTP - Simple Single Batch - FTP script and batch in a single file

Description:

Embed FTP script into a batch script. Add this line at the beginning of the FTP script:

@ftp -i -s:"%~f0"&GOTO:EOF

The "FTP -s:ftpscript.txt" option executes a FTP script wheres "%~f0" resolved to the name of the running batch file. "GOTO:EOF" ends the batch script and makes sure the FTP script doesn`t run as part of the batch. 
Good: You end up with only one file that contains the batch script and the FTP script combined. 
Minor flaw: The batch command in the first line causes an "Invalid command." error when executed in FTP context, however the FTP execution will continue.

Features:
  • Single file to distribute combining batch and FTP script
Script:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@ftp -i -s:"%~f0"&GOTO:EOF
open example.com
username
password
!:--- FTP commands below here ---
lcd c:\MyLocalDirectory
cd  public_html/MyRemoteDirectory
binary
mput "*.*"
disconnect
bye
Script Output:
 DOS Script Output
ftp> @ftp -i -s:"%~f0"&GOTO:EOF
Invalid command.
ftp> open example.com
User (Username:(none)):

ftp> !:--- FTP commands below here ---
ftp> lcd c:\MyLocalDirectory
Local directory now c:\MyLocalDirectory.
ftp> cd  public_html/MyRemoteDirectory
ftp> binary
ftp> !: mput "*.*"
ftp> disconnect
ftp> bye

TOP
2009-12-06

FTP - Automatic Login - Automatically login to your FTP session with a single click

Description:

If you frequently find yourself calling FTP from the command line, each time having to login and change directory and change FTP modes, until you finally get where you want be in order to do some real work then you may wish to get there with a singe click.

This little batch can connect to your FTP server and logs you in before it gives you the prompt. You can easily add more FTP commands to it, like changing directories or switching to binary mode or whatever you like to be done before taking over control on the FTP prompt.

The FTP connection information is embedded within the batch itself. The batch connects to an FTP server by executing itself in FTP context using the FTP -s option. Once executing in FTP context it executes all FTP commands listed in the file. By omitting the final FTP "bye" command it will stop at the FTP prompt and wait for user input.

Optionally a FTP script can be provided as input stream, that way multiple FTP scripts can share the same login information. Example:

FtpLogin.bat <script1.ftp

Script:Download: FtpLogin.bat  
1.
2.
3.
4.
5.
@ftp -i -s:"%~f0"&GOTO:EOF
open example.com
username
password
pwd
Script Output:
 DOS Script Output
ftp> @ftp -i -s:"%~f0"&GOTO:EOF
Invalid command.
ftp> open example.com
Connected to example.com.
220-
220 FTP Server ready
User (example.com:(none)):
331 Password required

230 User logged in
ftp> pwd
257 "/" is the current directory
ftp>

TOP
2009-12-06

FTP Scripts Sharing Login Info - Manage the FTP login separately from your FTP scripts

Description:

If you have multiple FTP scripts that all use the same login information to your FTP site then you may wish to manage the login information separately from your FTP scripts in a single place. That way if the username, password or hostname for the FTP connection changes you only need to edit a single place instead of having to edit all FTP scripts one by one.

This automatic login script (also described in detail earlier) can be used to execute different FTP scripts that share the same login information stored within the batch file.

Example: FtpLogin.bat script1.ftp

Note: The FTP scripts passed into the batch must have the login sequence removed.

Note: The FTP script executes even if the connection sequence fails potentially causing `Not connected` and other errors. This is no different from regularly executing FTP with -s option.

Script:Download: FtpLoginSharing.bat  
1.
2.
3.
4.
@type %1|ftp -i -s:"%~f0"&GOTO:EOF
open example.com
username
password

TOP
2008-10-17

FTP - Resolving Environment Variables - Creating FTP script on the fly at runtime and using variables within the FTP script

Description:

This batch executed the FTP script embedded within the batch. All variables in the FTP script will be resolved.

The FOR loop extracts the FTP script into a temporary file. It the ECHO command is being CALLed for each line in order to resolve the variables.

Variables can be used within the FTP script the same way as in a batch script, including any string manipulation and command line arguments like %1 %2 %~n0 %* and so on.

All batch lines start with semicolon so that they will be ignored by the FOR loop. Semicolon is the default end-of-line (EOL) character used by the FOR command.

Script:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
;@echo off
;(for /f "usebackq delims=" %%A in ("%~f0") do call echo.%%A)>"%temp%\%~n0.ftp"
;ftp -i -s:"%temp%\%~n0.ftp"
;GOTO:EOF

open example.com
username
password
!:--- FTP commands below here ---
cd public_html/%COMPUTERNAME%
binary
hash on
%*
disconnect
bye

TOP
2010-02-05

FTP - Download Only New Files - Ftp script to download only files that don`t exist in local folder, i.e. to avoid overwrite

Description:This batch connects twice to the FTP server. First time it retrieves a list of files on the FTP server. This list is being trimmed to contain only files that don`t already exist locally. The files in the trimmed list are then downloaded during a second connection.

Note: Since all files are passed into the FTP`s MGET command there might be a limit to the number of files that can be processed at once.

Script:Download: BatchFtpDownloadOnlyNewFiles.bat  
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
@Echo Off

REM -- Define File Filter, i.e. files with extension .txt
Set FindStrArgs=/E /C:".txt"

REM -- Extract Ftp Script to create List of Files
Set "FtpCommand=ls"
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
Rem Notepad "%temp%\%~n0.ftp"

REM -- Execute Ftp Script, collect File Names
Set "FileList="
For /F "Delims=" %%A In ('"Ftp -v -i -s:"%temp%\%~n0.ftp"|Findstr %FindStrArgs%"') Do (
    Call Set "FileList=%%FileList%% "%%A""
)

REM -- Extract Ftp Script to download files that don't exist in local folder
Set "FtpCommand=mget"
For %%A In (%FileList%) Do If Not Exist "%%~A" Call Set "FtpCommand=%%FtpCommand%% "%%~A""
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
Rem Notepad "%temp%\%~n0.ftp"

For %%A In (%FtpCommand%) Do Echo.%%A

REM -- Execute Ftp Script, download files
ftp -i -s:"%temp%\%~n0.ftp"
Del "%temp%\%~n0.ftp"
GOTO:EOF


:extractFileSection StartMark EndMark FileName -- extract a section of file that is defined by a start and end mark
::                  -- [IN]     StartMark - start mark, use '...:S' mark to allow variable substitution
::                  -- [IN,OPT] EndMark   - optional end mark, default is first empty line
::                  -- [IN,OPT] FileName  - optional source file, default is THIS file
:$created 20080219 :$changed 20100205 :$categories ReadFile
:$source http://www.dostips.com
SETLOCAL Disabledelayedexpansion
set "bmk=%~1"
set "emk=%~2"
set "src=%~3"
set "bExtr="
set "bSubs="
if "%src%"=="" set src=%~f0&        rem if no source file then assume THIS file
for /f "tokens=1,* delims=]" %%A in ('find /n /v "" "%src%"') do (
    if /i "%%B"=="%emk%" set "bExtr="&set "bSubs="
    if defined bExtr if defined bSubs (call echo.%%B) ELSE (echo.%%B)
    if /i "%%B"=="%bmk%"   set "bExtr=Y"
    if /i "%%B"=="%bmk%:S" set "bExtr=Y"&set "bSubs=Y"
)
EXIT /b


[Ftp Script 1]:S
!Title Connecting...
open example.com
username
password

!Title Preparing...
cd public_html/MyRemoteDirectory
lcd c:\MyLocalDirectory
binary
hash

!Title Processing... %FtpCommand%
%FtpCommand%

!Title Disconnecting...
disconnect
bye

TOP
2010-02-05

FTP - Upload Only New Files - Ftp script to upload only files that don`t exist in remote folder, i.e. incremental upload

Description:This batch connects twice to the FTP server. First time it retrieves a list of files on the FTP server. Local files that are are not in this list will then be uploaded during a second connection.

Note: Since all files are passed into the FTP`s MPUT command there might be a limit to the number of files that can be processed at once.

Script:Download: BatchFtpUploadOnlyNewFiles.bat  
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
@Echo Off
Setlocal Enabledelayedexpansion

REM -- Define File Filter, i.e. files with extension .txt
Set FindStrArgs=/E /C:".txt"

REM -- Extract Ftp Script to create List of Files
Set "FtpCommand=ls"
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
Rem Notepad "%temp%\%~n0.ftp"

REM -- Execute Ftp Script, collect File Names
Set "FileList="
For /F "Delims=" %%A In ('"Ftp -v -i -s:"%temp%\%~n0.ftp"|Findstr %FindStrArgs%"') Do (
    Call Set "FileList=%%FileList%% "%%A""
)

REM -- Extract Ftp Script to upload files that don't exist in remote folder
Set "FtpCommand=mput"
For %%A In (%FileList%) Do set "Exist["%%~A"]=Y"
For /F "Delims=" %%A In ('"dir /b "%localdir%"|Findstr %FindStrArgs%"') Do (
    If Not defined Exist["%%~A"] Call Set "FtpCommand=%%FtpCommand%% "%%~A""
)
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
rem  Notepad "%temp%\%~n0.ftp"

For %%A In (%FtpCommand%) Do Echo.%%A

REM -- Execute Ftp Script, download files
ftp -i -s:"%temp%\%~n0.ftp"
Del "%temp%\%~n0.ftp"
GOTO:EOF


:extractFileSection StartMark EndMark FileName -- extract a section of file that is defined by a start and end mark
::                  -- [IN]     StartMark - start mark, use '...:S' mark to allow variable substitution
::                  -- [IN,OPT] EndMark   - optional end mark, default is first empty line
::                  -- [IN,OPT] FileName  - optional source file, default is THIS file
:$created 20080219 :$changed 20100205 :$categories ReadFile
:$source http://www.dostips.com
SETLOCAL Disabledelayedexpansion
set "bmk=%~1"
set "emk=%~2"
set "src=%~3"
set "bExtr="
set "bSubs="
if "%src%"=="" set src=%~f0&        rem if no source file then assume THIS file
for /f "tokens=1,* delims=]" %%A in ('find /n /v "" "%src%"') do (
    if /i "%%B"=="%emk%" set "bExtr="&set "bSubs="
    if defined bExtr if defined bSubs (call echo.%%B) ELSE (echo.%%B)
    if /i "%%B"=="%bmk%"   set "bExtr=Y"
    if /i "%%B"=="%bmk%:S" set "bExtr=Y"&set "bSubs=Y"
)
EXIT /b


[Ftp Script 1]:S
!Title Connecting...
open example.com
username
password

!Title Preparing...
cd public_html/MyRemoteDirectory
lcd c:\MyLocalDirectory
binary
hash

!Title Processing... %FtpCommand%
%FtpCommand%

!Title Disconnecting...
disconnect
bye






[CentOS] ftp로 백업서버로 백업하기 쉘스크립트


현재 서버는 백업서버로의 접근이 ftp만 가능하다.
telnet이 된다면 백업서버에서 쉘을 작성하면 더 용이할 듯하네 ~
사정이 이러하니 실서버에서 백업서버로 ftp로 백업 파일을 전송한다.

파일, 디비 백업은 다음 포스트에 남기도록 하겠다. (검색하면 정말 많이 나온다)
아래와 같이 백업쉘스크립트를 작성한다. 해당 서버에 맞게 작성하면 될듯하다.

#!/bin/bash

# FTP 현 서버에서 데이터 FTP 전송

TODAY=`date +%Y%m%d` # 오늘날짜 저장
DELETE_DATE=`date -d "-5 days" +%Y%m%d` # 오늘날짜에서 -n일 저장
DELETE_DATE_SQL=`date -d "-5 days" +%Y%m%d` # 오늘날짜에서 -n일 저장
DELETE_DATE_LOG=`date -d "-5 days" +%Y%m%d` # 오늘날짜에서 -n일 저장
YOIL=`date +%a` # 요일을 저장


#ftp set
USERNAME=***
PASSWORD=***
HOST=****
B_DIR=/home/_dev/backup

TGZ_FILE="db.tgz"
TGZ_DIR=${B_DIR}/$(date +%Y%m%d)_*.sql


# 매일백업하는 파일중 오래된 파일 삭제처리
rm -f ${B_DIR}/${DELETE_DATE}_${TGZ_FILE}

# sql 삭제도 여기서 
rm -f ${B_DIR}/${DELETE_DATE_SQL}_*.sql

# 로그파일 삭제
rm -rf /home/_dev/log/${DELETE_DATE_LOG}_ftp_bak_log

# 압축 
tar cfz ${B_DIR}/${TODAY}_${TGZ_FILE} ${TGZ_DIR}

#chmod 777 ${B_DIR}/${TODAY}_${TGZ_FILE}

# 파일 
echo ${B_DIR}/${TODAY}_${TGZ_FILE}

{  
echo user $USERNAME $PASSWORD
echo cd /dbbackup
echo bin # as, bi 전송모드 
#echo hash 
echo prompt
echo lcd ${B_DIR} 
#echo put ${TODAY}_${TGZ_FILE} #하나씩
echo mput ${TODAY}_${TGZ_FILE} #다건
echo bye

} | ftp -n -v $HOST > /home/_dev/log/${TODAY}_ftp_bak_log

요런식으로 작성해서 파일이름은 ftp_backup.sh 하면 되겠다.
요넘을 매일 매일 돌려야 백업이 정상적으로 되겠지요.

cron에 등록한다.

# crontab -e 
# mysql backup ftp send
40 01 * * * /home/_dev/cron/ftp_backup.sh >/dev/null 2>&1

매일 새벽 01:40분에 압축하여 백업서버로 전송하면 끝 ~


로그인 후 댓글쓰기가 가능합니다.

?

List of Articles
번호 분류 제목 날짜 조회 수
676 Server 8기가 램에 맞는 Mysql config 셋팅 값 1 2016.02.22 2402
675 컴퓨터잡담 LG G5 기능 어디한번 보자 file 2016.02.21 8784
674 Server 오토셋과 apmsetup file 2016.02.17 1205
673 컴퓨터잡담 Sitemap.xml 만들어 주는 사이트 file 2016.01.23 317
672 컴퓨터잡담 ES 파일 탐색기로 FTP 동영상 재생하기 2016.01.22 2124
671 WindowsTip Diskless Boot Software for Windows(윈도우용 노하드 시스템) 2 file 2016.01.11 3832
670 컴퓨터잡담 ACTIVE-X 의 무서움 file 2015.12.26 269
669 컴퓨터잡담 서버 다운 원인 2015.12.10 258
668 Excel 엑셀 지정행 반복인쇄 하는 방법[지정행/지정열] file 2015.12.04 2471
667 컴퓨터잡담 [안드로이드] 키캣 4.4 버전 플래시 동영상 안될때 해결방법 file 2015.12.04 942
666 컴퓨터잡담 PC에 안드로이드 설치하기 2015.12.01 583
665 컴퓨터잡담 안드로이드 플래시 동영상이 안될때 해결방법 [200, Stream not found, NetStream.Play.StreamNotFound, clip: '[Clip] ...Progress] file 2015.12.01 3693
664 컴퓨터잡담 [오류해결방법] 200, Stream not found, NetStream.Play.StreamNotFound, clip: '[Clip] ... 2015.11.30 1084
663 Server Windows APM Install(Apache 2.4, PHP 6.0, Mysql) 최신버전 설치해보기 2015.11.27 545
662 [Docs]스프레드시트 Google 문서도구를 컴퓨터에 동기화 2015.11.18 1027
661 컴퓨터잡담 박지성 맨유시절 호날두와의 호흡경기 모음(유니세프 친선경기) 2015.11.13 510
660 컴퓨터잡담 도스 배치파일로 원격지 컴퓨터 모니터링 2015.11.13 509
» WindowsTip DOS Batch - FTP Scripts 배치파일 2015.11.12 1293
658 Excel 엑셀 깨진파일 복구하기 file 2015.11.11 3296
657 컴퓨터잡담 무선 공유기 선택시 중요한 4가지 2015.09.07 1114
Board Pagination Prev 1 ... 4 5 6 7 8 ... 39 Next
/ 39

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소