Todo * 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 * 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 * support * sftp * scp * Google cloud storage: https://developers.google.com/storage/ * http://godoc.org/code.google.com/p/google-api-go-client/storage/v1 * Has MD5, can't set updated time so will need to use metadata * metadata returned with object head and easy to update * rsync over ssh * dropbox: https://github.com/stacktic/dropbox * No MD5s * Can't set modtime * control times sync (which is slow) with -a --archive flag? 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 Copying a single file? Or maybe with a glob pattern? Could do with LimitedFs 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 * When doing copy it recurses the whole of the destination FS which isn't necessary Making a release * go build ./... * cd rclonetest * go build * ./rclonetest memstore: * ./rclonetest s3: * ./rclonetest drive2: * ./rclonetest /tmp/z * cd .. * make tag * edit README.md * git commit fs/version.go README.md docs/content/downloads.md * make retag * . ~/bin/go-cross * make cross * make upload * make upload_website * git push --tags origin master