Figure 1. Hopper architecture diagram, illustrating separate abstraction layers.
Hopper uses abstraction layers to easily extend its capabilities.
The FileSystem interface connects to underlying technologies such as FTP, SSH, TAR, and so on.
The Metadata interface connects to local and remote metadata sources.
The Copy interface connects FileSystems during transfers, providing recursion, two- or three-hop transfers, etc. as needed. The power of this architecture is exhibited when transferring items between dissimilar FileSystems. For instance, one can transfer from a remote tar file on one host to another remote host connected via ftp.
Figure 2. Hopper transfer process.