Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

ftp

FTP 서버에 연결하여 서버의 파일에 액세스

설명

FTP 연결 객체를 생성하는 ftp 함수를 호출하여 FTP 서버에 연결합니다. 그런 다음 FTP 연결 객체를 사용하여 파일을 업로드 및 다운로드합니다. 서버에서 다른 폴더를 생성, 삭제, 탐색할 수도 있습니다. 연결을 닫으려면 close 함수를 사용하십시오.

FTP는 보안 프로토콜이 아니므로 사용자 이름, 비밀번호 또는 FTP 서버에서 다운로드하거나 FTP 서버에 업로드하는 데이터를 암호화하지 않습니다. 보안 FTP 연결이 필요한 경우, sftp를 사용하십시오.

생성

설명

ftpobj = ftp(host)는 FTP 서버 host에 대한 연결을 열고 FTP 연결 객체를 반환합니다. 익명(인증되지 않음) 연결을 지원하는 호스트에 연결할 때만 이 구문을 사용할 수 있습니다.

예제

ftpobj = ftp(host,username)은 지정된 사용자 이름으로 FTP 계정에 액세스합니다. 익명(인증되지 않음) 연결을 지원하는 호스트에 연결할 때만 이 구문을 사용할 수 있습니다.

ftpobj = ftp(host,username,password)는 지정된 사용자 이름과 비밀번호로 FTP 계정에 액세스합니다.

ftpobj = ftp(host,username,password,Name,Value)는 하나 이상의 이름-값 인수를 사용하여 입력 인수를 추가로 지정합니다. 예를 들어, "System","Windows"를 지정하여 Windows® 운영 체제를 실행하는 FTP 서버에 연결하거나 "LocalDataConnectionMethod" 값을 지정하여 연결 모드를 수동 모드에서 능동 모드로 변경합니다.

입력 인수

모두 확장

FTP 서버의 호스트 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다.

FTP 서버의 디폴트 포트 번호는 21입니다. 연결을 위한 대체 포트 번호를 지정하려면 콜론(:)과 포트 번호를 host에 추가하십시오.

일반적으로 서버의 호스트 이름은 ftp로 시작합니다(예: "ftp.example.com"). 그러나 이는 관례일 뿐이며 기술적 요구 사항이 아닙니다. 예를 들어, ftpobj = ftp("www.example.com:20")은 서버 www.example.com이 FTP 서비스를 제공하도록 구성된 경우 포트 번호 20에 대한 익명 연결을 엽니다.

구성 데이터를 하드 코딩하지 않고도 MATLAB® Vault 또는 .env 파일에 이 민감한 정보를 저장하고 검색할 수 있습니다. 자세한 내용은 Keep Sensitive Information Out of Code 항목을 참조하십시오.

예: ftpobj = ftp("ftp.example.com")

FTP 서버에 대한 권한 있는 계정의 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. FTP 객체는 username을 일반 텍스트로 전송합니다.

권한 있는 계정의 비밀번호로, string형 스칼라 또는 문자형 벡터로 지정됩니다. FTP 객체는 password를 일반 텍스트로 전송합니다.

예: ftpobj = ftp("ftp.example.com","myusername","mypassword")

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: "System","Windows"

FTP 서버에서 실행되는 운영 체제의 유형으로, "System"과 함께 "unix" 또는 "Windows"로 구성된 이름-값 인수로 지정됩니다.

FTP 연결 객체는 서버의 운영 체제를 자동으로 감지합니다.

FTP 연결 객체가 해당 FTP 서버에서 실행되는 운영 체제에 맞게 구성되지 않은 경우, FTP dir 함수가 정보를 더 적게 반환할 수 있습니다. 이러한 경우, dir은 일부 빈 필드가 포함된 구조체형 배열을 반환할 수 있습니다. 이 경우, ftp를 다시 호출하고 "System" 이름-값 인수의 올바른 값을 지정하여 올바른 운영 체제를 지정하십시오.

연결 모드로, "LocalDataConnectionMethod"와 함께 "passive" 또는 "active"로 구성된 이름-값 인수로 지정됩니다.

FTP 연결을 설정할 때 사용하는 모드에는 두 가지가 있습니다. 대부분의 최신 FTP 구현은 passive 모드를 사용하지만, 일부 레거시 서버에 연결하려면 active 모드를 지정해야 할 수도 있습니다.

  • "passive" — 두 채널 모두 사용자의 컴퓨터가 설정합니다. 컴퓨터는 명령 채널을 설정한 다음 컴퓨터가 포트에 연결할 수 있도록 FTP 서버에게 포트 수신을 시작하라고 요청합니다.

  • "active" — 명령을 위한 채널은 사용자의 컴퓨터가 설정하고, 데이터를 위한 채널은 FTP 서버가 설정합니다. 능동 모드는 예를 들어 컴퓨터가 방화벽으로 보호되고 있어 외부 소스의 권한 없는 세션 요청을 허용하지 않는 경우 문제가 될 수 있습니다.

원격 서버에서 날짜를 읽어 들이기 위한 로캘로, "ServerLocale"과 함께 string형 스칼라 또는 문자형 벡터로 구성된 이름-값 인수로 지정됩니다.

ServerLocale 값은 다음이 될 수 있습니다.

  • xx_YY 형식의 문자형 벡터 또는 string형 스칼라. 여기서 xx는 언어를 지정하는 ISO 639-1 두 자리 코드(소문자)이고, YY는 국가를 지정하는 ISO 3166-1 alpha-2 코드(대문자)입니다.

다음 표에는 로캘에 일반적으로 사용되는 일부 값이 나와 있습니다.

로캘 언어국가
"de_DE"독일어독일
"en_GB"영어영국
"en_US"영어미국
"es_ES"스페인어스페인
"fr_FR"프랑스어프랑스
"it_IT"이탈리아어이탈리아
"ja_JP"일본어일본
"ko_KR"한국어한국
"nl_NL"네덜란드어네덜란드
"zh_CN"중국어(간체)중국

FTP 서버의 LIST 명령 출력값을 구문 분석하는 방법으로, "DirParserFcn"과 함수 핸들로 구성된 이름-값 인수로 지정됩니다. 디폴트 값은 서버 운영 체제에 따라 @matlab.io.ftp.parseDirListingForUnix 또는 @matlab.io.ftp.parseDirListingForWindows입니다.

사용자 지정 함수 핸들은 다음 2개의 입력값을 포함해야 합니다.

  1. 디렉터리 항목의 목록으로, string형 벡터로 지정됩니다.

  2. 서버 로캘로, string형 스칼라로 지정됩니다.

사용자 지정 함수 핸들의 출력값은 m×1 크기의 구조체형 배열이어야 하며, 여기서 m은 폴더에 있는 항목의 개수입니다. 구조체 필드는 dir 함수에서 반환하는 구조체 필드 name, isdir, bytes, date, datenum과 일치해야 합니다. 이러한 필드에 대한 자세한 내용은 dir 함수 도움말 페이지를 참조하십시오.

디폴트 값으로 인해 dir 출력값의 구문을 분석할 수 없는 오류가 발생하면 이 이름-값 인수를 지정하십시오. 이 인수는 dir을 참조하는 객체 함수를 사용하도록 올바르게 지정되어야 합니다.

함수 시그니처

이 사용자 지정 쓰기 함수는 두 개의 입력 인수, 즉 디렉터리 항목의 목록 entries와 서버 로캘 serverLocale을 받아야 합니다.

function listing = myFormatFcn(entries,serverLocale)

예제 함수

textscan으로 입력될 항목을 셀형 배열로 결합합니다.

function listing = myFormatFcn(entries,serverLocale)
    entries = join(entries,newline);
    out = textscan(entries,"%s%d%3c%d%s","MultipleDelimsAsOne",true);
    structSize = numel(out{1});
구조체를 사전할당합니다.
listing = struct("name",cell(structSize,1),"isdir",zeros(1,1), ...
        "bytes",zeros(1,1),"date",'',"datenum",zeros(1,1));
textscan 출력값에서 개별 부분을 가져옵니다.
monthName = string(out{3});
    day = string(out{4});
    time = string(out{5});
    names = out{1};
    bytes = out{2};
적절하게 필드를 채운 구조체를 생성합니다.
    for ii = 1 : structSize
        listing(ii).name = names{ii};
        listing(ii).isdir = false;
        listing(ii).bytes = bytes(ii);
        makeDate = day(ii) + "-" + monthName(ii) + " " + ...
            time(ii);
        thisDate = datetime(makeDate, "InputFormat", "dd-MMM HH:mm", ...
            "Locale", serverLocale);
        listing(ii).date = datestr(thisDate);
        listing(ii).datenum = datenum(thisDate);    
    end
end

FTP 서버의 전송 모드로, "Mode"와 함께 "binary" 또는 "ascii"로 구성된 이름-값 인수로 지정됩니다. HTML 페이지와 RTF(서식 있는 텍스트) 파일 같은 텍스트 파일에 ASCII 모드를 사용합니다. 실행 파일 또는 ZIP 아카이브 같은 텍스트가 아닌 파일에 이진 모드를 사용합니다.

FTP 객체를 생성한 후에는 ascii와 이진 함수를 사용하여 전송 모드를 변경합니다. 다른 유형의 파일을 전송하기 위해 모드를 변경해야 할 수도 있습니다. 전송 모드 설정은 MATLAB 세션이 종료하기 전까지 또는 사용자가 모드 설정을 변경하기 전까지 유지됩니다.

객체 함수

asciiFTP 전송 모드를 ASCII로 설정
binaryFTP 전송 모드를 이진으로 설정
cdSFTP 또는 FTP 서버에서 현재 폴더 변경 또는 보기
closeSFTP 또는 FTP 서버와의 연결 닫기
deleteSFTP 또는 FTP 서버에서 파일 삭제
dirSFTP 또는 FTP 서버의 폴더 내용 나열
mgetSFTP 또는 FTP 서버에서 파일 다운로드
mkdirSFTP 또는 FTP 서버에 새 폴더 만들기
mputSFTP 또는 FTP 서버에 파일이나 폴더 업로드
renameSFTP 또는 FTP 서버에서 파일 이름 바꾸기
rmdirSFTP 또는 FTP 서버에서 폴더 제거

예제

모두 축소

FTP 서버에 대한 연결을 열려면 FTP 객체를 만드십시오. FTP 객체를 사용하여 파일을 다운로드하고 서버에 있는 하위 폴더의 내용을 나열합니다. FTP 세션이 종료되면 연결을 닫습니다.

먼저, NCEI(National Centers for Environmental Information) FTP 서버에 연결합니다.

ftpobj = ftp("ftp.ngdc.noaa.gov")
  FTP with properties:

                         Host: "ftp.ngdc.noaa.gov"
                     Username: "anonymous"
                         Port: 21
                 ServerLocale: "en_US"
                 DirParserFcn: @matlab.io.ftp.parseDirListingForUnix
                         Mode: "binary"
    LocalDataConnectionMethod: "passive"
       RemoteWorkingDirectory: "/"

FTP 서버에서 최상위 폴더의 내용을 나열합니다.

dir(ftpobj)
 
DMSP                         Solid_Earth                  google12c4c939d7b90761.html  pub                          
INDEX.txt                    coastwatch                   index.html                   wdc                          
README.txt                   dmsp4alan                    international                                             
STP                          ftp.html                     ionosonde                                                 
Snow_Ice                     geomag                       mgg                                                       
 

FTP 서버에서 README.txt 파일을 다운로드합니다. mget 함수는 복사본을 현재 MATLAB® 폴더에 다운로드합니다.

mget(ftpobj,"README.txt");

readlines 함수를 사용하여 README.txt 복사본의 내용을 읽습니다.

readme = readlines("README.txt");
readme(1:4)
ans = 4×1 string
    "                 Welcome to the "
    "    NOAA/National Centers for Environmental Information (NCEI), "
    "    formerly the National Geophysical Data Center (NGDC)"
    "                    FTP area"

dir 함수를 사용하여 하위 폴더의 내용을 나열합니다.

dir(ftpobj,"STP")
 
ANOMALIES                   NOAA                        Solid_Earth                 publications                
DMSP                        SEIS                        aavso_22nov16               satellite_data              
ECLIPSE                     SGD                         aeronomy                    space-weather               
GEOMAGNETIC_DATA            SOLAR_DATA                  cdroms                      space_environment_modeling  
GOIN                        SPIDR                       goesr                       swpc_products               
GPS_GNSS                    STEP                        ionosonde                   tivoli                      
IONOSPHERE                  SWA                         log.txt                                                 
 

cd 함수를 사용하여 하위 폴더로 변경합니다. cd의 출력값은 현재 MATLAB 폴더가 아닌 FTP 서버에 있는 현재 폴더의 경로입니다.

cd(ftpobj,"STP/space-weather")
ans = 
'/STP/space-weather'

FTP 서버에서 현재 폴더의 내용을 나열합니다.

dir(ftpobj)
 
aurora-airglow           documentation            interplanetary-data      online-publications      solar-data               
denig-files              geomagnetic-data         ionospheric-data         satellite-data           spacecraft-environments  
 

FTP 서버와의 연결을 닫습니다. FTP 객체를 삭제하거나 연결이 시간 초과되도록 하여 연결을 닫을 수도 있습니다.

close(ftpobj)

NCEI(National Centers for Environmental Information)에서 제공하는 FTP 서비스입니다. NCEI 서비스 약관을 보려면 NCEI Privacy Policy, Disclaimer, and Copyright를 참조하십시오.

NCEI(National Centers for Environmental Information) FTP 서버에 연결합니다. 서버 로캘을 영국으로 지정합니다. 이름-값 인수 "DirParserFcn"을 사용하여 Windows에 맞게 구문 분석되도록 FTP 서버의 LIST 명령 출력값을 지정합니다.

ftpobj = ftp("ftp.ngdc.noaa.gov","ServerLocale","en_GB","DirParserFcn",@matlab.io.ftp.parseDirListingForWindows)
  FTP with properties:

                         Host: "ftp.ngdc.noaa.gov"
                     Username: "anonymous"
                         Port: 21
                 ServerLocale: "en_GB"
                 DirParserFcn: @matlab.io.ftp.parseDirListingForWindows
                         Mode: "binary"
    LocalDataConnectionMethod: "passive"
       RemoteWorkingDirectory: "/"

NCEI(National Centers for Environmental Information)에서 제공하는 FTP 서비스입니다. NCEI 서비스 약관을 보려면 NCEI Privacy Policy, Disclaimer, and Copyright를 참조하십시오.

  • FTP 객체는 프록시 서버 설정을 지원하지 않습니다.

  • 로그인 폴더로 이동하려면 cd 함수에 ~ 기호를 전달하십시오.

버전 내역

R2006a 이전에 개발됨