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

For the record, this is what my sync tab looks like:

@aforkosh Huh. Strange!

Looks like Dropbox found a way to resolve the issue on Silicon that it can’t use on Intel Macs. I wonder if the version number disparity means that the Intel and Silicon versions of Dropbox are on feature-divergent dev branches now.

That’s very strange. According to Dropbox, choosing the location is no longer supported on the Mac:

Expected changes with Dropbox for macOS - Dropbox Help

There seem to be several limitations, including not being able to have all files default to offline availability.

1 Like

Since Onedrive has a solution for the using external drive with CloudStorage location, it would be surprising if Dropbox don’t.

1 Like

Microsoft’s explanation about how to use OneDrive with an external drive while using the Apple mandated fileproviderd extension and the ~/Library/CloudStorage location is within this article:
https://techcommunity.microsoft.com/t5/microsoft-onedrive-blog/inside-the-new-files-on-demand-experience-on-macos/ba-p/3058922

The issue has come up in various Dropbox Community posts without resolution eg here and here.

3 Likes

Thanks for that link. It explains what Microsoft is doing and hints at what Dropbox could do for a similar workaround.

Microsoft maintains two directories with cloud content. Their “sync root” is the location where files are synced. It is (and must be) ~/Library/CloudStorage/OneDrive-Personal, just like Dropbox’s directory. But they also maintain a cache directory in a “hidden location”.

Their cache directory apparently (based on their article - I don’t use OneDrive on my Macs) contains a shadow of all your cloud storage. Most of the files are zero-length, except for local changes that have yet to be sync’ed to the server and files you tagged as “Always available on this device”. I assume files in the CloudStorage location exist as links to this cache directory for these “always available” files and when the local version differs from the remote version (e.g. when new changes have been saved but not yet sync’ed).

Anyway, when you choose to use another location on an external drive, they keep the sync root as it is - in CloudStorage, but they create the cache directory in a hidden directory on the external drive and symlink the publicly-visible directory on that drive to the sync root.

I assume that, when this is configured, files you mark as “always available” and unsynced changes will therefore end up on the external drive. Other files (those that OneDrive can choose to discard) will be stored in the CloudStorage location, and will be downloaded/purged as necessary based on available internal storage and your usage patterns.

All that having been said…

I wonder if another possible workaround might be to put your home directory on external media. Specify that location when creating the account. Then, I assume the CloudStorage location would be on that media. This might impact system performance if it’s an HDD, but the impact might not be too bad if the System and Data volumes (including application installations) are still on the internal volume.

Of course, if you try this, then that external volume MUST be available and mounted before you log-in. Depending on your device (destkop vs. laptop) and your usage patterns (tethered to a desk or on the go), this may or may not be acceptable.

2 Likes

I have an M1 Mac running Ventura and I upgraded Dropbox to this version when it suggested it was necessary for this OS. It immediately moved the Dropbox folder from my home folder to the location under discussion here.

What it also did was screw up my trash folder, although I now believe this is a Ventura bug.

Anyway, I’m commenting here, because it is still possible to run the other version, with the Dropbox folder in the home folder. I uninstalled Dropbox completely, reinstalled, and was offered the option at some point to not use the new version. That moved my Dropbox folder back and fixed the trash (which was still broken, even after uninstalling Dropbox). I’m now still running that version without any trouble.

1 Like

@jtbayly Thanks for that info. For my clients that continue to have their Dropbox files on an external drive, I will just not upgrade them to the newest Dropbox for as long as I can.

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