Description
| Uploads a directory tree from the local filesystem to the SFTP server. Synchronization modes include:
- 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.
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.
|
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
|