Dropbox drops support for storing files on an external drive (and OneDrive retains it)

Just a note that Dropbox often upgrades itself.

True. But this particular upgrade did ask both me and my friend to do it. I’m guessing eventually they will roll out this change automatically, though.

From what I’ve observed (I’m helping an organisation move their file server to OneDrive), the cache directory on the external drive is your local copy of the OneDrive files as you say – those that are selected to remain on the device, and those in active use. The files in the CloudStorage location aren’t ‘linked’ to the cache directory – they are separate files that are downloaded and purged (replaced with placeholders) as needed, with no guarantee that any of them will keep their data on the disk. But it seems that the CloudStorage location considers the cache directory to be the ‘remote’ cloud source. So when it needs a file, it ‘downloads’ it from the cache directory, and when a file is changed or created, it ‘uploads’ the changes back to the cache directory (on the external drive). I visualise it as:

👱user <--> ~/Library/CloudStorage/OneDrive <--> /Volumes/ExternalDrive/OneDrive/.ODContainer <--> onedrive.com

It’s the cache (.ODContainer) that follows the retention rules you’ve set and communicates with Microsoft’s cloud storage. The user interacts with the CloudStorage/OneDrive folder (which MacOS sees as the sync folder), and this folder retrieves and stores data from/to the .ODContainer folder. All user interaction is with the CloudStorage/OneDrive folder – including setting retention rules, even though the retention actually takes place in the cache folder. So if you’re offline, all the files marked to keep on device are available to you, even if they’re not in CloudStorage/OneDrive when you go offline.

One side-effect of this architecture is that if you have a folder (e.g. on an external drive) that’s larger than the space available on the disk holding your home directory, you can’t add it to OneDrive all at once. You have to add it in segments that fit within the available disk space, as it has to first be copied to ~/Library/CloudStorage/OneDrive, after which OneDrive will copy it to the .ODContainer cache folder on the external drive (where it will upload to Microsoft’s servers from). Once the files are in the cache folder the files in ~/Library/CloudStorage/OneDrive will be marked as purgeable so you can copy over the next batch of files. Of course, if you have a single file that is larger than the available space on the disk holding your home folder, you can’t add it to OneDrive through the Finder. You’ll have to use the web interface to upload it. Once it’s in OneDrive, I assume you can mark this large file to be always available, as that would download it to the external drive. But I imagine it would cause problems if you try and access the file from your Mac, as OneDrive won’t be able to copy it from the external drive to ~/Library/CloudStorage/OneDrive.

Overall, I think Microsoft came up with a decent and reasonably clever solution given the constraints. And they get points for putting in the effort to get something to work, compared with Dropbox who seem to have just given up and said there’s no support for using an external drive for your Dropbox folder. (I never thought OneDrive would provide a better Mac solution than Dropbox, but it’s a sign of how from its roots Dropbox has strayed.)

However, what should really happen is that Apple needs to add more flexibility into the cloud provider APIs. Moving CloudStorage to an external drive (or another location on the internal disk) should be supported by MacOS natively. I understand why Apple wants to standardise file syncing on MacOS, and in theory it should benefit users. But they need to do it properly, supporting more than the simplest use case.

1 Like

Very helpful and interesting analysis. Thank you.

It feels like you are describing a setup where there are two local copies of lots of files, though.

If you have both folders on your internal drive, does it behave the same way? That seems like it could be very inefficient with disk space, which is kind of the opposite of the goal with cloud storage.

I am totally confused. I am using a 2013 Mac Pro - an Intel machine which is running Monterey, 12.6.1. Dropbox version 163.4.5456. My Dropbox folder is on a local drive.
Dropbox folder location
Choose where your Dropbox is located on this Mac.

Yes, sometimes there are (one on your internal disk, one on the external), but only one copy (on the external disk) will remain if space is needed on the internal disk. The other is a temporary working copy.

Short answer is no. You can only choose the location of the cache folder if you are putting it on an external drive. If you select a location on your internal drive for the OneDrive folder, it just puts an alias there which points to ~/Library/CloudStorage/OneDrive. It does create a .ODContainer cache folder, but this is in standard, non-configurable location (I can’t remember where, probably somewhere in ~/Library). And importantly the semantics are different. The cache folder is still used for syncing with Microsoft’s servers, but it only keeps data as long as it needs to do the sync. When the cache folder is on your internal drive, it’s the CloudStorage/OneDrive folder which retains all files that are selected to remain on device. Additionally, OneDrive will use the APFS feature where a clone (two identical files) doesn’t require any additional disk space. The way the cache folder works on an internal drive is explained here.

1 Like

Thanks for the explanation. Makes a lot of sense.

Is Maestral’s non-delta sync important to know about?

Maestral uses the public Dropbox API which, unlike the official client, does not support transferring only those parts of a file which changed (“binary diff”).

Maybe if you have large files that are changed often on Dropbox. I really don’t, and I have fairly decent broadband upload speed.

If you keep very large files which are often altered only slightly and back them up to Dropbox, yes. For most purposes, and assuming you have reasonably speedy ISP, I’d guess probably not.

Is this happening to people now with the current system? I have my DropBox folder on an external SoftRAID drive and it has not moved. When I Show in Finder, it is still the destination