cancel
Showing results for 
Search instead for 
Did you mean: 
Announcements
Update: Find information on Dropbox support during COVID-19 here
Close
cancel
Showing results for 
Search instead for 
Did you mean: 

API v2 - set metadata/mtime

hemancuso
Explorer | Level 3

With the API v2 preview underway, I'd really really love a way to set the mtime and other associated metadata for a particular file. Having it always stamped to whatever the server has makes developing an application to mirror data [or in our case, a filesystem] very challenging. Clearly the desktop client has this ability, so adding some subset of that functionality into the API would be very helpful.

4 Replies 4

Re: API v2 - set metadata/mtime

Dropboxer
Dropboxer

We'll certainly consider this, but I'm curious if you've considered keeping track of revs for syncing. This has a few advantages over using timestamps:

  1. It allows you to sync correctly with more than one computer (without having to have strict clock synchronization requirements).
  2. It allows you to sync correctly even if the time on the local computer changes (e.g. due to correcting clock drift or even things like leap seconds).
  3. It allows you to know when you can safely overwrite a file in Dropbox. (With just a timestamp, you can't tell whether or not a file was modified in the cloud since the last time you uploaded, so you don't know if an overwrite might destroy work from another computer. A conditional upload with a parent rev also avoids clobbering a file in a race condition where the file is modified remotely during an upload.)

FYI, I'm pretty sure the Dropbox desktop client never uses the client modified time at all (though it does set it so it matches the local filesystem).

I suppose the downside of using the rev is that you have to keep track locally of what the rev of each file was the last time you uploaded/downloaded, but this is a small bit of information to track per file and helps avoid correctness issues with your syncing (that could lead to data loss).

Re: API v2 - set metadata/mtime

hemancuso
Explorer | Level 3

Thanks Steve -

Revs are great, but don't really speak to the issue. It's not so much that we're trying to use mtime in order to figure out what needs to be sync'd, but so that we can provide a network filesystem representation of Dropbox. And like the desktop client, we'd like to have the client modified time stay the same on a particular file when they move it into Dropbox via ExpanDrive.

If a user wants to migrate a large tree of info into Dropbox via ExpanDrive, all of metadata gets tossed. Most of that isn't particularly important, but users do notice when the modification times of data change.

Also, the use-case where some automated process [backup app, let's say] wants to sync data into Dropbox via ExpanDrive - those tools [rsync, et al] rely on the mtime as an indication of whether or not something has changed.

Right now the best we can do is keep a local database that maps a particular rev to some metadata, and then potentially sync that out. But given that the Dropbox desktop client can set mtime, it'd be nice to expose that to us [at least as an optional parameter on upload, if not its own metadata update endpoint]. Google Drive and Box already provide fairly robust metadata handling in their APIs, it'd be nice if Dropbox would consider it.

Re: API v2 - set metadata/mtime

Dropboxer
Dropboxer

That makes sense; thanks. This is something being actively considered.

Re: API v2 - set metadata/mtime

Anton S.13 New member | Level 1
New member | Level 1

I also vote for this. I tried implementing a service to mirror a specific dropbox folder some years ago with api v1 and as a realized that I can't set the date at the dropbox side I've canceled the project.

Work Smarter with Dropbox

The way we work is changing. Share and discover new ways to work smarter with Dropbox in our community.

Sound good? Let's get started.
Who's talking

Top contributors to this post

What do Dropbox user levels mean?
Need more support?