Syntax
| SFTP.SyncTreeUpload(localBaseDir As String, remoteBaseDir As String, ByVal mode As Long, ByVal bRecurse As Long) As Long
|
---|---|
Description
| Uploads a directory tree from the local filesystem to the SFTP server. Synchronization modes include:
If bRecurse is 0, then the local directory tree is not recursively descended.
Important: If the remoteBaseDir is an absolute path, then it is a path from the root of the server's filesystem. For example, "/home/joe/targetDir". Use a relative path to specify a directory relative to the $HOME directory of the SSH user account. For example, "./targetDir".
Note: After this method returns, the paths of the downloaded files are available in the SyncedFiles property.
Returns 1 for success, 0 for failure.
|
See Also
| |
Example
Synchronize Directory Tree | Sub Main
Dim success As Long
success = sftp.Connect("my-ssh-server.com",22)
If (success = 1) Then
success = sftp.AuthenticatePw("mySshLogin","mySshPassword")
End If
If (success = 1) Then
success = sftp.InitializeSftp()
End If
If (success <> 1) Then
Debug.Print sftp.LastErrorText
Exit Sub
End If
' Synchronize (by uploading) the local directory tree rooted at "qa_data/sftpUploadTree"
' with the remote directory tree rooted at "syncUploadTest"
' Both directories are relative paths. The remote directory
' is relative to the HOME directory of the SSH user account.
' The local directory is relative to the current working directory of the process.
' It is also possible to use absolute paths.
Dim remoteDir As String
remoteDir = "syncUploadTest"
Dim localDir As String
localDir = "qa_data/sftpUploadTree"
' Possible modes that can be passed to the SyncTreeUpload method are:
' mode=0: Upload all files
' mode=1: Upload all files that do not exist on the server.
' mode=2: Upload newer or non-existant files.
' mode=3: Upload only newer files. If a file does not already exist on the server, it is not uploaded.
' mode=4: transfer missing files or files with size differences.
' mode=5: same as mode 4, but also newer files.
' This example will use mode 5 to upload missing, newer, or files with size differences.
Dim mode As Long
mode = 5
' This example turns on recursion to synchronize the entire tree.
' Recursion can be turned off to synchronize the files of a single directory.
Dim recursive As Long
recursive = 1
success = sftp.SyncTreeUpload(localDir,remoteDir,mode,recursive)
If (success <> 1) Then
Debug.Print sftp.LastErrorText
Exit Sub
End If
Debug.Print "Success."
End Sub
|
Example
Synchronize Tree with ProgressInfo Callbacks | Dim WithEvents Mysftp As ChilkatSFtp
' ProgressInfo callback method.
Private Sub sftp_ProgressInfo(ByVal name As String, ByVal value As String)
Debug.Print "ProgressInfo: " & name & ", " & value
Dim sbName As New ChilkatStringBuilder
success = sbName.Append(name)
If (sbName.ContentsEqual("syncUploadFile") = 1) Then
Dim xml As New ChilkatXml
success = xml.LoadXml(value)
Dim file_localPath As String
file_localPath = xml.GetAttrValue("localPath")
Dim file_remotePath As String
file_remotePath = xml.GetAttrValue("remotePath")
End If
End Sub
Sub Main
Set Mysftp = New ChilkatSFtp
Dim success As Long
success = Mysftp.Connect("my-ssh-server.com",22)
If (success = 1) Then
success = Mysftp.AuthenticatePw("mySshLogin","mySshPassword")
End If
If (success = 1) Then
success = Mysftp.InitializeSftp()
End If
If (success <> 1) Then
Debug.Print Mysftp.LastErrorText
Exit Sub
End If
' Synchronize (by uploading) the local directory tree rooted at "c:/ckAssets/qa_data/syncRemote2/"
' with the remote directory tree rooted at "qa/syncRemote2"
' The remote directory
' is relative to the HOME directory of the SSH user account.
' The local directory is an absolute path (but could be a relative path if desired)
Dim remoteDir As String
remoteDir = "qa/syncRemote2"
Dim localDir As String
localDir = "c:/ckAssets/qa_data/syncRemote2/"
' Possible modes that can be passed to the SyncTreeUpload method are:
' mode=0: Upload all files
' mode=1: Upload all files that do not exist on the server.
' mode=2: Upload newer or non-existant files.
' mode=3: Upload only newer files. If a file does not already exist on the server, it is not uploaded.
' mode=4: transfer missing files or files with size differences.
' mode=5: same as mode 4, but also newer files.
' Because we want to see the ProgressInfo callbacks, upload all files..
Dim mode As Long
mode = 0
' This example turns on recursion to synchronize the entire tree.
' Recursion can be turned off to synchronize the files of a single directory.
Dim recursive As Long
recursive = 1
success = Mysftp.SyncTreeUpload(localDir,remoteDir,mode,recursive)
If (success <> 1) Then
Debug.Print Mysftp.LastErrorText
Exit Sub
End If
Debug.Print "Success."
' Here is sample output of the above code showing the ProgressInfo values.
' If the name is "syncUploadFile", then the value is a snippet of XML containing the local file path and the remote file path of the file
' being uploaded.
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\accentedLatin1.txt" remotePath="qa/syncRemote2/accentedLatin1.txt" />
' ProgressInfo: SendByteCount, 52
' ProgressInfo: SendBytesPerSec, 52000
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\accentedUtf8.txt" remotePath="qa/syncRemote2/accentedUtf8.txt" />
' ProgressInfo: SendByteCount, 226
' ProgressInfo: SendBytesPerSec, 226000
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\anter_cert.pem" remotePath="qa/syncRemote2/anter_cert.pem" />
' ProgressInfo: SendByteCount, 2165
' ProgressInfo: SendBytesPerSec, 2165000
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\mv.exe" remotePath="qa/syncRemote2/mv.exe" />
' ProgressInfo: SendByteCount, 9922165
' ProgressInfo: SendBytesPerSec, 24438830
' ProgressInfo: SendByteCount, 20898165
' ProgressInfo: SendBytesPerSec, 25705000
' ProgressInfo: SendByteCount, 31554165
' ProgressInfo: SendBytesPerSec, 25885287
' ProgressInfo: SendByteCount, 42242165
' ProgressInfo: SendBytesPerSec, 25995178
' ProgressInfo: SendByteCount, 48066165
' ProgressInfo: SendBytesPerSec, 23666255
' ProgressInfo: SendByteCount, 50821629
' ProgressInfo: SendBytesPerSec, 23916060
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\abc\chiliPepper.gif" remotePath="qa/syncRemote2/abc/chiliPepper.gif" />
' ProgressInfo: SendByteCount, 50829347
' ProgressInfo: SendBytesPerSec, 23919692
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\data\chiliPepper.gif" remotePath="qa/syncRemote2/data/chiliPepper.gif" />
' ProgressInfo: SendByteCount, 50837065
' ProgressInfo: SendBytesPerSec, 23923324
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\data\xyz\dkimHtmlBody.txt" remotePath="qa/syncRemote2/data/xyz/dkimHtmlBody.txt" />
' ProgressInfo: SendByteCount, 50837250
' ProgressInfo: SendBytesPerSec, 23923411
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\data\xyz\dkimVerifyTest.eml" remotePath="qa/syncRemote2/data/xyz/dkimVerifyTest.eml" />
' ProgressInfo: SendByteCount, 50840884
' ProgressInfo: SendBytesPerSec, 23925121
' ProgressInfo: syncUploadFile, <file localPath="c:\ckAssets\qa_data\syncRemote2\data\xyz\emailForCreateDsn.eml" remotePath="qa/syncRemote2/data/xyz/emailForCreateDsn.eml" />
' ProgressInfo: SendByteCount, 50845086
' ProgressInfo: SendBytesPerSec, 23927099
End Sub
|