[Cyberduck-trac] [Cyberduck] #5374: Support for s3sync.rb directories

Cyberduck trac at trac.cyberduck.ch
Sun Oct 24 15:45:21 CEST 2010

#5374: Support for s3sync.rb directories
 Reporter:  https://www.google.com/accounts/o8/id?id=aitoawlrmuzhq-_kxl0hxjzrfjbbrckk3e4bleq  |          Owner:  dkocher
     Type:  defect                                                                            |         Status:  new    
 Priority:  normal                                                                            |      Milestone:  4.0    
Component:  s3                                                                                |        Version:  3.7    
 Severity:  normal                                                                            |       Keywords:         
 Platform:  Mac OS X 10.6                                                                     |   Architecture:  Intel  
 s3sync.rb (http://www.s3sync.net/) is a cross-platform Ruby program that
 easily transfers directories between a local directory and an Amazon S3
 I greatly recommend s3sync for any big S3 synchronization tasks.

 Cyberduck (tested version 3.7 / 7380) does not yet support S3 directories
 created by s3sync, even though they are correctly displayed as directories
 in e.g. S3Fox (S3 Firefox plugin). The developer of s3sync quotes in his

 In S3 there's no actual concept of folders, just keys and nodes. So, every
 uses its own proprietary way of storing dir info (my scheme being the best
 naturally) and in general the methods are not compatible.

 s3sync seems to store directories as dummy nodes that all contain the same
 directory string "{E40327BF-517A-46e8-A6C3-AF51BC263F59}". See code
 snippets of s3sync.rb:

         $S3syncDirString = '{E40327BF-517A-46e8-A6C3-AF51BC263F59}'
         $S3syncDirTag = 'd66759af42f282e1ba19144df2d405d0'
         $S3syncDirFile = Tempfile.new("s3sync")
         $S3syncDirFile.puts $S3syncDirString
         $S3syncDirFile.close # not final; we need this file again to 'put'
 directory nodes


                 def directory?()
                         @tag == $S3syncDirTag and @size ==


                                 # all s3 directories are dummy nodes
 contain the same directory string
                                 # so for easy comparison, set our size and
 tag thusly
                                 @size = $S3syncDirString.length
                                 @tag = $S3syncDirTag

 It would be great if Cyberduck would support those directories as well in
 the future.

 Regards, Philip

Ticket URL: <http://trac.cyberduck.ch/ticket/5374>
Cyberduck <http://cyberduck.ch>
Open source FTP, SFTP, WebDAV, Cloud Files, Google Docs & Amazon S3 Browser for Mac & Windows.

More information about the Cyberduck-trac mailing list