TODO list for s3cmd project =========================== - For 0.9.9.x - Make 'sync s3://bkt/some-filename local/other-filename' work (at the moment it'll always download). - Enable --exclude for [del], [setacl], [ls]. - Enable --dry-run for [del], [setacl], reject for all others. - Add testsuite for new put, get and sync semantic. - Recursive cp/mv on remote "folders". - Document --recursive and --force for buckets, CloudFront, new options --dry-run, --include, etc. - Allow change /tmp to somewhere else - With --guess-mime use 'magic' module if available. - For 1.0.0 - Add 'geturl' command, both Unicode and urlencoded output. - After 1.0.0 - Speed up upload / download with multiple threads. - Sync should be able to update metadata (UID, timstamps, etc) if only these change (i.e. same content, different metainfo). - Sync must backup non-files as well. At least directories, symlinks and device nodes. - If GPG fails error() and exit. If un-GPG fails save the file with .gpg extension. - Keep backup files remotely on put/sync-to if requested (move the old 'object' to e.g. 'object~' and only then upload the new one). Could be more advanced to keep, say, last 5 copies, etc. - Implement GPG for sync (it's not that easy since it won't be easy to compare the encrypted-remote-object size with local file. either we can store the metadata in a dedicated file where we face a risk of inconsistencies, or we'll store the metadata encrypted in each object header where we'll have to do large number for object/HEAD requests. tough call). Or we can only compare local timestamps with remote object timestamps. If the local one is older we'll *assume* it hasn't been changed. - Keep man page up to date and write some more documentation - Yeah, right ;-)