Sample code for 30+ languages & platforms
DataFlex

SFTP Sync Download Tree w/ Must-Match Directory Constraints

See more SFTP Examples

Demonstrates how SFTP synchronize a directory tree in the download direction, but only entering directories matching a set of wildcard filenames.

Note: This example requires Chilkat v9.5.0.76 or greater.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSftp
    String sRemoteDir
    String sLocalDir
    Integer iMode
    Boolean iRecursive
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatSFtp)) To hoSftp
    If (Not(IsComObjectCreated(hoSftp))) Begin
        Send CreateComObject of hoSftp
    End

    Get ComConnect Of hoSftp "my-ssh-server.com" 22 To iSuccess
    If (iSuccess = True) Begin
        Get ComAuthenticatePw Of hoSftp "mySshLogin" "mySshPassword" To iSuccess
    End

    If (iSuccess = True) Begin
        Get ComInitializeSftp Of hoSftp To iSuccess
    End

    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Possible synchronization modes are:
    // mode=0: Download all files
    // mode=1: Download all files that do not exist on the local filesystem.
    // mode=2: Download newer or non-existant files.
    // mode=3: Download only newer files. If a file does not already exist on the local filesystem, it is not downloaded from the server.
    // mode=5: Download only missing files or files with size differences.
    // mode=6: Same as mode 5, but also download newer files.

    // Only enter remote directories named either "data" or matching "x*"
    Set ComSyncMustMatchDir Of hoSftp To "data; x*"

    // Imagine our remote directory tree has these files and directories:

    // 	accentedLatin1.txt
    // 	accentedUtf8.txt
    // 	alice.key
    // 	anter_cert.pem
    // 	chiliPepper.gif
    // 	helloWorld.pdf
    // 	abc/chiliPepper.gif
    // 	abc/ghk/
    // 	data/chiliPepper.gif
    // 	data/xyz/dkimHtmlBody.txt
    // 	data/xyz/dkimVerifyTest.eml
    // 	data/xyz/emailForCreateDsn.eml
    // 	text/frenchUtf8.txt
    // 	text/helloWorld.txt
    // 	text/PolishEmailBody.txt
    // 	text/something/

    Move "syncDownloadTest/someDir" To sRemoteDir
    Move "qa_output" To sLocalDir
    Move 0 To iMode
    Move True To iRecursive
    Get ComSyncTreeDownload Of hoSftp sRemoteDir sLocalDir iMode iRecursive To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // The following files were downloaded:

    // accentedLatin1.txt
    // accentedUtf8.txt
    // alice.key
    // anter_cert.pem
    // chiliPepper.gif
    // helloWorld.pdf
    // data/chiliPepper.gif
    // data/xyz/dkimHtmlBody.txt
    // data/xyz/dkimVerifyTest.eml
    // data/xyz/emailForCreateDsn.eml

    Showln "Success."


End_Procedure