DriveHQ CommandFTP를 사용한 FTP 스크립팅

DriveHQ CommandFTP를 이용한 FTP/SFTP 스크립팅


1. 소개
2. DriveHQ CommandFTP 구문 및 매개변수
3. FTP 스크립트 파일 생성
3.1 FTP 스크립트 파일의 예시
3.2 매개변수가 포함된 FTP 스크립트 파일
4. Windows 작업 스케줄러를 사용하여 파일 전송 자동화
5. DriveHQ CommandFTP를 사용한 자동 폴더 동기화
6. FTP 명령어 참조
6.1 표준 FTP 명령어
6.2 DriveHQ 고급 FTP 명령어

1. 소개

DriveHQ CommandFTP는 Windows FTP 클라이언트를 대체하도록 설계된 강력한 명령줄 FTP 및 SFTP 클라이언트입니다. FTP 스크립팅을 지원하며 모든 표준 FTP/SFTP 서버와 호환됩니다.

FTP/SFTP는 인터넷을 통해 대용량 파일이나 폴더를 전송하는 데 매우 널리 사용됩니다. 명령줄 FTP 클라이언트는 FTP 스크립트를 이용한 자동 파일 전송에 많이 활용됩니다. 많은 사람들이 윈도우에 내장된 명령줄 FTP 클라이언트를 사용하지만, 내장 FTP 클라이언트에는 몇 가지 주요 단점이 있습니다:

  • 1. 이 프로그램은 액티브 모드 FTP만 지원하는데, 이는 라우터, 방화벽 또는 보안 소프트웨어에 의해 차단되는 경우가 많습니다.
  • 2. 데이터 암호화 없이 일반 FTP만 지원합니다.
  • 3. 자동 재개/재시도 기능을 지원하지 않습니다.

DriveHQ CommandFTP는 기본 Windows FTP 클라이언트를 대체하도록 설계되었습니다. 다음과 같은 장점이 있습니다:

  • 1. 이 프로그램은 능동형 및 수동형 FTP 모드를 모두 지원합니다.
  • 2. 이 시스템은 SSL을 통한 FTP(FTPS 및 FTPES)와 SFTP를 지원합니다.
  • 3. 자동 재개/재시도 기능을 지원합니다.
  • 4. 데이터 압축 및 암호화를 지원합니다.
  • 5. 폴더 다운로드/업로드를 지원합니다.
  • 6. 폴더 미러링/동기화를 지원합니다.
  • 7. 이 시스템은 감사 및 문제 해결을 위한 이벤트 로깅을 지원합니다.
  • 8. 수술 후 이메일로 보고서를 보낼 수 있습니다.
  • 9. 더욱 강력한 FTP 스크립트를 지원합니다.

DriveHQ CommandFTP는 많은 경우 Windows FTP 클라이언트를 직접 대체할 수 있습니다. 두 프로그램은 유사한 구문과 명령줄 매개변수를 공유합니다. 하지만 DriveHQ CommandFTP는 훨씬 더 많은 기능을 제공합니다. 복잡한 파일 전송 작업도 단 하나의 명령으로 처리할 수 있습니다. SFTP를 지원하므로 FTP 스크립트 파일을 작성하고 SFTP 서버에서 실행할 수도 있습니다.

2. DriveHQ CommandFTP 구문 및 매개변수

통사론


cmdftp FTP_SERVER [-u:USERNAME] [-p:PASSWORD] [-i] [-A] [-k:"PRIVATE_KEY_FILE"] [-s:"FTP_SCRIPT_FILE"] [-d:"LOG_FILE"] [-m:"SOURCE_FTP_SERVER", "DESTINATION_FTP_SERVER"] [CMDOPTIONS]
cmdftp [-s:"FTP_SCRIPT_FILE"] [-d:"logfile"]

매개변수

매개변수 설명
FTP_SERVER FTP/SFTP 서버 이름 또는 IP 주소(예: ftp.drivehq.com, ftp://ftp.drivehq.com 또는 ftps://ftp.drivehq.com)를 입력합니다. 매개변수에 -s:FTP_SCRIPT_FILE이 포함되지 않은 경우 필수 입력 사항입니다
-u:USERNAME FTP/SFTP 계정 사용자 이름을 지정합니다.
-p:PASSWORD FTP/SFTP 계정 암호를 지정합니다.
-k:"PRIVATE_KEY_FILE" 선택 사항입니다. SFTP 개인 키 파일 경로를 지정합니다.
-s:"FTP_SCRIPT_FILE" 선택 사항입니다. FTP 스크립트 파일 경로를 지정합니다. 이 매개변수를 제공하면 "-d:LOG_FILE" 옵션을 제외한 다른 매개변수는 무시됩니다.

명령 옵션

/xo[:time] 오래된 파일을 제외하세요
/xn[:time] 최신 파일을 제외하세요
/xf:filenames 제외할 파일, 파일은 쉼표로 구분됩니다
/xd:foldernames 폴더는 제외합니다. 폴더는 쉼표로 구분됩니다

로깅 옵션

-d:"LogFileName" 로그 파일 경로를 지정합니다. LogFileName 없이 "-d"를 사용하면 콘솔 창에 로그가 표시됩니다.

3. FTP 스크립트 파일 생성

FTP 스크립트는 IT 관리자와 시스템 통합업체 사이에서 매우 인기가 높습니다. 자동화된 데이터 백업 및 파일 전송에 널리 사용됩니다. FTP 스크립트를 사용하면 FTP 명령과 입력값이 포함된 텍스트 파일을 생성하고, 이러한 명령들을 한 번에 순차적으로 실행할 수 있습니다. 스크립트 파일에 여러 FTP 명령을 포함할 수 있기 때문에 매우 복잡한 파일 전송 작업도 수행할 수 있습니다.

기본 Windows FTP 클라이언트를 사용한 FTP 스크립팅은 매우 제한적입니다. 보안에 취약한 일반 FTP만 지원하고, 라우터/방화벽에 의해 차단되는 경우가 많은 Active Mode FTP만 지원합니다. DriveHQ CommandFTP는 Windows FTP 클라이언트의 대부분 기능을 지원할 뿐만 아니라, Windows FTP 클라이언트에서 사용할 수 없는 다양한 기능도 제공합니다. 또한, DriveHQ CommandFTP는 모든 표준 FTP 서버와 호환됩니다.

FTP 스크립트 파일을 작성하려면 먼저 대화형 모드에서 FTP 명령을 실행할 수 있습니다. 명령 창을 열고 아래 스크린샷에 표시된 대로 다음 명령을 입력하십시오:

일반적으로 이러한 명령어에는 FTP 서버 연결, 서버 로그인, 디렉터리 내 파일/폴더 목록 보기, 현재 디렉터리 변경, 파일 업로드/다운로드/삭제 등이 포함됩니다. FTP를 가끔씩만 사용하는 경우에는 위의 방법으로도 충분합니다. 하지만 예약된 백업 작업이나 다른 회사와의 EDI(전자 데이터 교환)와 같이 파일을 반복적으로 전송/백업/삭제해야 하는 경우에는 스크립트 파일을 작성하여 반복적으로 사용할 수 있습니다. 운영 체제에서 지원하는 작업 스케줄러와 함께 사용하면 이러한 업무 프로세스를 자동화할 수 있습니다.

FTP 스크립트 파일의 예시
FTP 스크립트 파일은 대화형 FTP 세션에서 사용하는 것과 동일한 명령/입력을 포함합니다. 기본적으로 텍스트 편집기(예: 메모장)에서 텍스트 파일을 만들고 대화형 모드에서처럼 명령과 입력을 입력하기만 하면 됩니다. DriveHQ의 CommandFTP는 Windows FTP 클라이언트와 매우 유사한 인터페이스를 제공합니다. 다음 명령은 Windows FTP 클라이언트와 DriveHQ의 CommandFTP 클라이언트 모두에서 실행할 수 있습니다. CommandFTP를 사용하려면 ftp 대신 cmdftp를 입력하십시오. 예::

C:\>ftp
ftp> open ftp.drivehq.com
Connected to ftp.drivehq.com.
220 Welcome to the most popular FTP hosting service! Save on hardware, software,
 hosting and admin. Share files/folders with read-write permission. Visit http:/
/www.drivehq.com/ftp/;
User (ftp.drivehq.com:(none)): dhqdemo
331 User name ok, need password.
Password: xxxxxxxxx
230 User dhqdemo logged on.
ftp> cd test
250 CWD command successful. "/test" is current directory.
ftp> delete orders.xml.bak
550 File not found.
ftp> rename orders.xml orders.xml.bak
350 File exists, ready for destination name.
250 File "/test/orders.xml" renamed successfully.
ftp> put c:\test\orders.xml
200 Port command successful.
150 Opening BINARY mode data connection for file transfer.
226 Transfer complete
ftp: 41 bytes sent in 0.06Seconds 0.65Kbytes/sec.
ftp> quit
221 Bye

C:\>


보시다시피, 이 명령들은 다음과 같습니다:
- FTP 서버(ftp.drivehq.com)에 로그인하세요.
- 사용자 이름과 비밀번호를 입력하세요.
- 로컬 디렉토리 "c:\test"로 변경하세요.
- FTP 디렉토리 "/test"로 이동합니다.
- FTP 서버에서 "Orders.xml.bak" 파일(존재하는 경우)을 삭제하십시오.
- FTP 서버에서 "Orders.xml" 파일(존재하는 경우)의 이름을 "Orders.xml.bak"으로 변경하십시오.
- 로컬 파일 "Orders.xml"을 FTP 서버에 업로드하세요.
- 종료

스크립트 파일로 저장하기 전에 명령 프롬프트 창에서 실행하여 코드를 디버깅할 수 있습니다. 스크립트의 내용은 다음과 같습니다:

open ftp.drivehq.com
USERNAME
xxxxxxxxx
cd test
delete orders.xml.bak
rename orders.xml orders.xml.bak
put c:\test\orders.xml
quit

위의 FTP 스크립트는 매일 실행되어 새로운 주문 정보를 자동으로 FTP 서버로 전송할 수 있습니다. 이 스크립트는 최신 "Orders.xml" 파일을 FTP 서버에 업로드하며, 업로드 전에 이전 파일의 이름을 변경(백업)합니다.
FTP 스크립트를 실행하려면 FTP 명령에 -s 옵션을 붙여 실행하면 됩니다. Windows FTP 클라이언트를 사용하는 경우 다음과 같이 할 수 있습니다:
	ftp -s:ftpscript.txt 

DriveHQ CommandFTP 클라이언트를 사용하면 다음을 수행할 수 있습니다
	cmdftp -s:ftpscript.txt 
    

매개변수가 포함된 FTP 스크립트
위의 FTP 스크립트는 정적입니다. 반복 실행할 수는 있지만 유연성이 떨어집니다. 예를 들어 여러 클라이언트에 데이터를 전송해야 하는 경우 각기 다른 폴더를 사용하고 싶을 것입니다. 동일한 FTP 스크립트를 재사용하려면 추가 매개변수를 지원해야 합니다. 해결 방법은 두 가지가 있습니다:
(1) 배치 스크립트 파일을 사용하여 FTP 스크립트 파일을 동적으로 생성합니다. Windows 배치 스크립트는 명령줄 매개변수를 받을 수 있습니다. Windows FTP 클라이언트를 사용하는 경우 이것이 유일한 해결책입니다.
(2) DriveHQ CommandFTP는 추가 매개변수를 지원합니다.
첫 번째 방법은 test.bat과 같은 배치 파일을 만드는 것입니다. 파일을 C:\test 폴더에 저장하세요. 그런 다음 다음 명령어를 입력하여 배치 파일을 실행할 수 있습니다:

	c:\test\test.bat PARAM1 PARAM2 ...

test.bat 파일은 다음과 같습니다:

@echo off
echo open ftp.drivehq.com> ftpscript.txt
echo USERNAME>> ftpscript.txt
echo PASSWORD>> ftpscript.txt
echo cd %1>>  ftpscript.txt
echo delete %2.bak>>  ftpscript.txt
echo rename %2 %2.bak>> ftpscript.txt
echo put c:\%1\%2>> ftpscript.txt
echo quit>> ftpscript.txt


이렇게 하면 배치 파일의 인수를 FTP 스크립트 파일로 전달할 수 있습니다. 동일한 배치 스크립트를 여러 회사에서 재사용할 수 있습니다. 예를 들어,:
    c:\test\test.bat c:\OrdersOfCompanyA ordersOfCompanyA.xml
    c:\test\test.bat c:\OrdersOfCompanyB ordersOfCompanyB.xml
DriveHQ CommandFTP를 사용하면 추가 인수를 포함하여 FTP 스크립트를 실행할 수 있습니다. 따라서 배치 스크립트 파일을 만들 필요 없이 다음 명령으로 FTP 스크립트를 실행할 수 있습니다:
    
cmdftp -s:ftpscript.txt argument1 argument2 argument3 ...
    
FTP 스크립트 파일을 다음과 같이 약간 수정해야 합니다:

# %1 is like "test", %2 is like "orders.xml"
# This file is saved as c:\temp\ftpscript2.txt
# to run it, use:
# cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml

open ftp.drivehq.com
USERNAME
PASSWORD
cd /%1
delete /%1/%2.bak
rename /%1/%2 /%1/%2.bak
put c:\%1\%2
quit

위 스크립트 파일에서 폴더 이름은 %1로, 파일 이름은 %2로 대체되었습니다. FTP 스크립트를 실행하려면 이러한 매개변수를 명령줄 인수로 제공해야 합니다.
    
cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
    
DriveHQ CommandFTP가 스크립트 파일을 실행하면 %1은 "test"로, %2는 "orders.xml"로 바뀝니다.

4. Windows 작업 스케줄러를 사용하여 파일 전송을 자동화하세요

배치 파일을 사용하든 DriveHQ CommandFTP를 직접 사용하든, Windows 작업 스케줄러에서 파일 전송을 예약할 수 있습니다. 매일, 매주 또는 매월 실행되도록 예약할 수 있으며, 고급 설정에서는 몇 시간 또는 몇 분 간격으로 실행되도록 설정할 수도 있습니다. 또한 작업 시작 시간을 지정할 수도 있습니다. 작업 스케줄러를 실행하려면 검색 상자에 "작업 스케줄러"를 입력하세요(아래 스크린샷 참조):

Launch Windows Task Scheduler

작업 스케줄러를 클릭하면 Windows 작업 스케줄러가 실행됩니다.

Click create basic task in Windows Task Scheduler

작업을 생성하려면 "기본 작업 생성"을 클릭하십시오.

Create basic scheduled task

작업 이름과 설명을 입력한 다음 다음을 클릭하세요.

Select task trigger / schedule

작업 일정을 선택하세요. 매일, 매주, 매월 중에서 선택할 수 있습니다. 시간 단위로 작업을 실행하려면 나중에 고급 설정에서 변경할 수 있습니다. 다음을 클릭하여 작업을 설정하세요.

Scheduled Task - Action - select a program

작업 페이지에서 "프로그램 시작"을 선택한 다음 다음을 클릭합니다.

Scheduled Task - Action - Select DriveHQ CommandFTP

찾아보기 버튼을 클릭하여 DriveHQ CommandFTP(cmdftp.exe) 프로그램을 선택합니다. "인수 추가" 텍스트 상자에 명령줄 매개변수를 입력합니다. "시작 위치"는 선택 사항이며, 실행 파일과 동일한 폴더로 설정할 수 있습니다. "다음"을 클릭하여 작업 생성을 완료합니다.

고급 설정에 액세스하려면 "작업 일정 라이브러리"를 클릭하세요. 예약된 작업 목록을 볼 수 있습니다. "주문 업로드" 작업을 두 번 클릭하면 작업 설정을 편집할 수 있습니다.

Scheduled Task - Advanced Settings - Edit Task Properties

참고로, 기본적으로 이 작업은 사용자가 로그인했을 때만 실행됩니다. 여기에서 설정을 변경하여 사용자가 로그인하지 않은 경우에도 작업이 실행되도록 할 수 있습니다.

5. DriveHQ CommandFTP를 사용한 자동 폴더 동기화

DriveHQ CommandFTP는 폴더 미러링을 지원합니다. 로컬 폴더와 FTP 폴더를 동기화하는 것은 매우 쉽습니다. 다음 명령어를 사용하세요:

	cmdftp FTP_SERVER -u:username -p:password -m:"LOCAL_FOLDER|FTP_FOLDER"

Windows 작업 스케줄러를 사용하면 이 명령을 주기적으로 실행하여 두 폴더를 동기화할 수 있습니다.

6. FTP 명령어 참조

FTP 서버에 로그인한 후에는 FTP 서버로 FTP 명령을 보낼 수 있습니다. Windows FTP 클라이언트는 다음 명령을 지원합니다. 이 명령어들은 FTP 프로토콜에 정의된 FTP 명령어와는 다르다는 점에 유의하십시오. 각 FTP 프로토콜 명령은 일반적으로 하나의 간단한 작업만 처리합니다. 하지만 Windows FTP 클라이언트의 FTP 명령은 여러 FTP 프로토콜 명령을 사용할 수 있습니다.

DriveHQ CommandFTP는 Windows FTP 클라이언트와 유사합니다. 비슷한 명령어와 구문을 지원하며, 추가적으로 DriveHQ 전용 고급 FTP 명령어(예: 폴더 복사, 이동, 업로드, 다운로드, 삭제 명령어)도 지원합니다.

6.1 Windows FTP 클라이언트 명령어

Windows FTP 클라이언트(ftp.exe)는 다음과 같은 FTP 명령어를 지원합니다:
FTP 명령어 설명
! 이 명령은 로컬 운영 체제와 FTP 서버 간에 전환합니다. FTP 서버에 로그인하면 기본적으로 FTP 서버가 사용됩니다. 로컬에서 명령을 실행하려면 일반적으로 다음 명령을 사용할 수 있습니다 !CMD_NAME, e.g. !dir, !mkdir, 등.
? 도움말 정보를 표시합니다.
append 파일에 추가합니다.
ascii ASCII 전송 모드를 설정합니다.
bell "명령 완료 시 신호음 발생" 기능을 켜세요.
binary 바이너리 전송 모드를 설정합니다.
bye FTP 세션 연결을 끊고 종료하세요.
cd 디렉토리를 변경하세요.
close FTP 세션을 종료합니다.
delete 파일을 삭제합니다.
debug 디버깅 모드를 켜거나 끕니다.
dir 디렉터리 내의 파일 및 하위 폴더 목록을 표시합니다.
disconnect FTP 세션 연결을 끊으세요.
get 원격 FTP 서버에서 파일을 가져옵니다.
glob 글로빙 기능을 켜거나 끄세요. 끄면 파일 이름에 와일드카드 문자가 포함됩니다 놓다 그리고 얻다 명령은 문자 그대로 받아들여집니다.
hash 전송된 각 버퍼에 대해 "#" 인쇄를 토글합니다.
help 도움말 정보를 표시합니다. 일반적으로 help COMMAND_NAME을 사용합니다.
lcd 단독으로 입력하면 현재 로컬 작업 디렉터리를 표시하고, 그렇지 않으면 로컬 작업 디렉터리를 변경합니다.
literal 연결된 FTP 서버에 임의의 명령을 전송하고, 예상되는 응답으로 한 줄짜리 메시지를 출력합니다.
ls FTP 폴더에 있는 파일 목록을 표시합니다.
mdelete FTP 서버에서 여러 파일을 삭제합니다.
mdir 여러 FTP 디렉터리의 파일/하위 폴더 목록을 표시합니다.
mget FTP 서버에서 여러 파일을 로컬 작업 폴더로 다운로드합니다.
mkdir 새 디렉토리를 생성하세요.
mls 여러 FTP 디렉터리의 내용을 나열합니다.
mput 로컬 파일 여러 개를 FTP 서버에 업로드하세요.
open FTP 서버에 연결하세요.
prompt 여러 명령에 대한 대화형 프롬프트 기능을 활성화 또는 비활성화합니다.
put FTP 서버에 파일 하나를 업로드하세요.
pwd FTP 서버의 작업 디렉토리를 출력하세요.
quit FTP 서버 연결을 끊고 종료하세요.
quote 문자 그대로의 명령과 동일합니다(임의의 FTP 명령 전송).
recv FTP 서버에서 파일을 다운로드/수신합니다.
remotehelp 원격 서버에서 도움을 받으세요.
rename FTP 서버에서 파일 이름을 변경합니다.
rmdir FTP 서버에서 디렉터리를 삭제합니다.
send 파일 하나만 보내주세요.
status 현재 옵션의 상태를 보여줍니다.
trace 패킷 추적을 켜거나 끕니다.
Type 파일 전송 유형을 설정하세요.
user 새 사용자 정보(사용자 이름)를 보내주세요.
verbose 상세 표시 모드를 켜거나 끄세요.

6.2 DriveHQ 고급 FTP 명령어

DriveHQ CommandFTP는 몇 가지 고급 FTP 명령어를 지원합니다:

FTP 명령어 설명
download 폴더 또는 파일을 다운로드하세요.
통사론: Download [FTP-FILEorFOLDER-PATH] [LOCAL-FILEorFOLDER-PATH]
upload 폴더 또는 파일을 업로드하세요.
통사론: Upload [LOCAL-FILEorFOLDER-PATH] [FTP-FILEorFOLDER-PATH]
mirror 로컬 폴더와 FTP 폴더를 미러링합니다.
통사론: MIRROR [LOCAL-FOLDER-PATH] [FTP-FOLDER-PATH]
deleteoldfiles 지정된 폴더에서 x일보다 오래된 파일을 삭제합니다.
통사론: deleteoldfiles [FTP-PATH] /xo:[time]