TODO
65a7c0f6
 TODO list for s3cmd project
 ===========================
 
5a9b6e33
 - Before 1.0.0 (or asap after 1.0.0)
59864e57
   - Make 'sync s3://bkt/some-filename local/other-filename' work
     (at the moment it'll always download).
c74f3dfe
   - Enable --exclude for [ls].
8d63b2bc
   - Allow change /tmp to somewhere else
319b1b88
   - With --guess-mime use 'magic' module if available.
01a80524
   - Support --preserve for [put] and [get]. Update manpage.
   - Don't let --continue fail if the file is already fully downloaded.
   - Option --mime-type should set mime type with 'cp' and 'mv'. 
     If possible --guess-mime-type should do as well.
1a602974
   - Make upload throttling configurable.
5a9b6e33
   - Allow removing 'DefaultRootObject' from CloudFront distributions.
   - Get s3://bucket/non-existent creates empty local file 'non-existent'
42320d03
   - Add 'geturl' command, both Unicode and urlencoded output.
1a602974
   - Add a command for generating "Query String Authentication" URLs.
3db91d0d
   - Support --acl-grant (together with --acl-public/private) for [put] and [sync]
   - Filter 's3cmd ls' output by --bucket-location=
06481a4a
 
 - After 1.0.0
3db91d0d
   - Sync must backup non-files as well. At least directories, 
     symlinks and device nodes.
06481a4a
   - Speed up upload / download with multiple threads.
3db91d0d
     (see http://blog.50projects.com/p/s3cmd-modifications.html)
1e2d476a
   - Sync should be able to update metadata (UID, timstamps, etc)
     if only these change (i.e. same content, different metainfo).
6541c835
   - If GPG fails error() and exit. If un-GPG fails save the 
     file with .gpg extension.
c686da51
   - 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 
42320d03
      copies, etc.
bc886ff8
   - Memory consumption on very large upload sets is terribly high.
1a602974
   - Implement per-bucket (or per-regexp?) default settings. For
     example regarding ACLs, encryption, etc.
65a7c0f6
 
 - 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).
1e2d476a
   Or we can only compare local timestamps with remote object 
   timestamps. If the local one is older we'll *assume* it 
5a9b6e33
   hasn't been changed. But what to do about remote2local sync?
65a7c0f6
 
7393bdba
 - Keep man page up to date and write some more documentation
   - Yeah, right ;-)