Todo * Make a test suite which can run on all the given types of fs * Copy should use the sync code as it is more efficient at directory listing * FIXME: ls without an argument for buckets/containers? * FIXME: More -dry-run checks for object transfer * Might be quicker to check md5sums first? for swift <-> swift certainly, and maybe for small files * swift: Ignoring the pseudo directories * if object.PseudoDirectory { * fmt.Printf("%9s %19s %s\n", "Directory", "-", fs.Remote()) * Make Account wrapper * limit bandwidth for a pool of all individual connectinos * do timeouts by setting a limit, seeing whether io has happened and resetting it if it has * make Account do progress meter * Make logging controllable with flags (mostly done) * -timeout: Make all timeouts be settable with command line parameters * Check the locking in swift module! * Windows paths? Do we need to translate / and \? * Make a fs.Errorf and count errors and log them at a different level * Add max object size to fs metadata - 5GB for swift, infinite for local, ? for s3 * tie into -max-size flag Ideas * could do encryption - put IV into metadata? * optimise remote copy container to another container using remote copy if local is same as remote - use an optional Copier interface * Allow subpaths container:/sub/path * support * sftp * scp * Google cloud storage: https://developers.google.com/storage/ * rsync over ssh * dropbox: https://github.com/nickoneill/go-dropbox (no MD5s) Need to make directory objects otherwise can't upload an empty directory * Or could upload empty directories only? * Can't purge a local filesystem because it leaves the directories behind s3 * Can maybe set last modified? * https://forums.aws.amazon.com/message.jspa?messageID=214062 * Otherwise can set metadata * Returns etag and last modified in bucket list Bugs Non verbose - not sure number transferred got counted up? CHECK