Copying Folders

You may copy a folder and its contents by selecting it in one of the browser panes and clicking "◀ Get" or "► Send".

When copying a folder, the folder is created at the destination if needed and the contents and all sub-folders are recursively copied into it.  Hidden files, hidden folders, and the contents of hidden folders are not included unless you enable the Show Hidden setting.

Streaming versus One-at-a-Time

Folders can be copied using either One-at-a-Time or Streaming, as determined by the "Streaming Folders" checkbox in the Setup pane of the Options Options window.

Streaming mode transfers the entire contents of a folder as a single real-time data stream.  One-at-a-time mode first scans the source folder, checks for local conflicts, then copies each file and subfolder individually.

Streaming mode is faster for many small files.  One-at-a-Time mode provides more efficient error recovery.

Streaming is faster when there are a very large number of files or the average file size is small, because it does not take the time to scan the source and does not wait for each file to be written to disk before sending the next one.  Any files at the destination with conflicting names may be silently overwritten.  If the network or server is disrupted during a Streaming session, auto-retry will attempt to restart from the beginning.  If any individual file cannot be read or written, the entire transfer may be aborted.  Unix symbolic links will be copied to unix systems and ignored by Windows systems.  Compression is not available with Streaming.  Streaming Folders requires only a limited amount of memory (see buffer size), allowing up to 2 billion files to be transferred per session.

For paths which are very fast or high latency, Streaming performance may be affected by the buffer size.

One-at-a-time will be almost as fast as Streaming when the average file size is large enough to take several seconds each, and the number of files is only a few hundred or less.  If the network or server is disrupted during a one-at-a-time session, auto-retry will attempt to resume from the point of disruption.  If an individual file cannot be transferred or retried, the remaining files may still be transferred.  Unix symbolic links to regular files will be followed and the target file copied.  Symbolic links to folders and broken links will be skipped.  Compression is available with one-at-a-time directory transfer.  The number of files which can be transferred with one-at-a-time is limited by available client memory.

For server-side object handlers which support folder transfer, one-at-a-time is used regardless of the Options setting.

Server Behavior

When uploading one-at-a-time, conflicts with remote files will only be noted when the NoOverwrite setting has been enabled.  Otherwise, uploads will silently replace conflicting files.

Streaming transfers are considered a single transaction and are logged as such by the server.  One-at-a-time transfers are marked as "bulk".  The server may filter out logging of individual bulk transfers, if LogFilter is set above 0.  Remote directory scans and directory creations will be logged as normal transactions during one-at-a-time.  If NoOverwrite is set, a streaming folder upload will fail if the top-level folder exists, regardless of its contents.

Feature Summary

Below is a summary of the behavioral differences between Streaming and One-at-a-Time directory transfer:

FeatureStreamingOne-at-a-Time
Pre-scan SourceNoYes
Conflict DetectionNoYes
Checkpoint RestartNoYes
Continue After InterruptNoYes
Continue After File ErrorNoYes
Compression AvailableNoYes
Object HandlersNoYes
Client Memory UseLowVariable
Transfer SpeedFastVariable
Unix Symlink to FileCopiedFollowed
Unix Symlink to FolderCopiedIgnored
Hidden/Invisible ItemsOptionalOptional
UTF-8 File NamesYesYes
Modified DateYesYes
Creation DateYesNo
Locked/Read-OnlyYesYes
Unix UID/GIDYesYes
Log Each FileNoOptional

These behaviors may change in future versions.