Transfer the entire contents of a directory by specifying either the "-i" (streaming) or "-h" (one-at-a-time) option. All files and sub-folders are recursively copied.
movedat -i firstname.lastname@example.org:remote_dir local_dir or movedat -h email@example.com:remote_dir local_dir
movedat -i local_dir firstname.lastname@example.org:remote_dir or movedat -h local_dir email@example.com:remote_dir
When copying a folder, the contents of the source folder are placed inside the destination folder. The destination folder must exist and must be writeable.
Streaming versus One-At-A-Time
Streaming mode (-i) transfers the entire contents of a folder as a single real-time data stream. One-at-a-time mode (-h) first scans the source folder, checks for local conflicts, then copies each file and subfolder individually.
Streaming mode is faster for many small files, but may be less reliable than One-at-a-Time mode.
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. Hidden or invisible files are included in the transfer and an attempt will be made to preserve this state. Streaming Folders requires only a limited amount of memory, 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. One-at-a-time can warn of conflicts and may prompt the user for resolution unless "-y" or "Yes" is set. 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. Invisible or hidden files will be copied only if the -H (ShowHidden) option is enabled. 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.
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 will filter out logging of individual bulk transfers, unless LogFilter has been lowered from its default setting. 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.
Below is a summary of the behavioral differences between Streaming and One-at-a-Time directory transfer:
|Continue After Interrupt||No||Yes|
|Continue After File Error||No||Yes|
|Client Memory Use||Low||Variable|
|Unix Symlink to File||Copied||Followed|
|Unix Symlink to Folder||Copied||Ignored|
|UTF-8 File Names||Yes||Yes|
|Log Each File||No||Optional|
|Keep Existing Files||No||Optional|
These behaviors may change in future versions.