I see multiple comments here saying that this is unfortunate because people were using symlinks in order to automatically have backups of program configurations etc.
But the solution is simple, just switch around which is the real file and which is the symlink.
(Aside: Why not aliases in my bashrc, you ask? Because I use a few different operating systems and eventually realized that rather than trying to unify OS specifics and shared aliases in bashrc it was much simpler to maintain the aliases as wrapping shell scripts.)
This is not a "solution", this is at best a workaround. Moving around important system files and replacing them with symlinks means you are changing your system and everything in it just because one small program that doesn't want to play by the rules can do what it wants.
The real solution is to use other software than Dropbox, that plays by the rules and cares about its users.
This seems dangerous and gives me the heebie jeebies, but I can't put my finger on exactly why. It just feels like bad practice to move my important files somewhere else and link to them, but I've never trusted the cloud anyway.
It is in the nature of clouds that they change and sometimes go away. I don't want my .bashrc going away.
This is probably the desired effect that Dropbox wanted. There is little reason to remove the symlink feature that worked perfectly well - it is a strategic move at best.
Reversing the symlinks means Dropbox becomes the source of truth and the dependency on Dropbox increases.
Personally, I used this to easily backup my Downloads and Documents.
This is what I’ve always done, I didn’t even know that the other way was an option, and honestly I don’t like the idea of Dropbox reaching out of it’s sandbox at ~/Dropbox to read or write files by following symlinks. That sounds like a security risk to me.
That works for directories, but not for files such as ~/.bashprofile, if tools update such files by
- writing the updated file under a different name
- deleting the old file
- renaming the updated file
as the second step would delete the link (or fail; I’m not too familiar with the UNIX APIs)
(I think that’s a fairly common strategy. I tried checking whether vim uses it, but got lost in https://github.com/vim/vim/blob/master/src/fileio.c; that file is too large to comfortably read on an iPad (try guessing how many lines of C it takes to ”Read lines from file "fname" into the buffer after line "from"”)
This is one of the most important reasons I've kept using Dropbox despite having a much larger storage space on Google Drive or elsewhere. Dropbox once had superior handling of symlinks that deals with plenty of weird edge cases gracefully. I don't think I have any reason to use Dropbox any more.
I've honestly wanted to drop Dropbox for a while now. Over the past year or two, it has been becoming a worst product every single time I interact with it and also a lot spammier trying to get me to upgrade to Premium. They put a very low device limit and keep removing features. I honestly don't see any reason to use it over Google Drive anymore.
Why does Dropbox just keep jumping the shark? Every fricken turn breaks something for me. This breaks the entire way I have my systems set up.
They were amazing software and now they’ve eroded away most of it such that they have very little over their competitors.
At this point the only reason I stay is they sync macOS extended file tags and comments; both things I make heavy use of. To my knowledge Syncthing doesn’t, nor Google Drive for that matter.
Dropbox is still OK for easily sharing files with other, especially movies and stuff that its sharing web UI supports.
But in 2019 it is basically an inferior and antiquated tool for syncing your own files.
I moved to the open-source SyncThing[1] some years ago, which gave me:
1.) the ability to sync any arbitrary set of folders I want, which of course completely obviates the need to care about things like this issue (i.e., no need to use symlinks to sync other folders, because you can just sync those folders themselves)
2.) the ability to actually sync folders that contain symlinks, as many types of software projects do (Dropbox and many other purported sync tools can't do that, which means there are many common types of folder that they can't sync without corrupting them by replacing the symlink with the contents of the symlink destination) EDIT: Or, have they fixed that now, and is that why they are making this announcement? I am not sure. Back when I used Dropbox for syncing, it couldn't sync a folder containing a symlink, but this may no longer be true. (?)
3.) better sync reliability
4.) better sync performance
5.) completely superior security story; end-to-end encryption means you are in control of who can access your files (no access for employees, governments, etc)
The tradeoffs are:
a.) a little bit more work to set up (but it's really just a little bit... I walked my dad through it over the phone... basically the same amount of work as getting your credit card billing setup on Dropbox)
b.) weaker story on mobile, no iOS app
c.) no "cloud" so you have to do your own (e.g., leave an iMac running 24/7 back at your house or something)
All in all, after 2+ years I am extremely happy with Syncthing, and I don't think products like Dropbox have a very strong case to exist anymore, at least not for the original purpose of syncing folders full of computer files.
That problem has now been solved better, way more securely, and for free. (Which is probably why Dropbox seems to be trying to pivot to become some kind of enterprise team commmunication hub.)
[1] https://syncthing.net (if on a Mac just install the Mac app and it will install the other components for you)
> c) no "cloud" so you have to do your own (e.g., leave an iMac running 24/7 back at your house or something)
You really buried the lede right at the bottom didn't you? The entire point of a Dropbox type service is off-site cloud backups. If I have to buy and maintain a second server and leave it running 24/7 in my house (i.e. I'm not insulated against losing my data if my house burns down or a burglar breaks in) then clearly this product is providing an entirely different and far more limited service than Dropbox and is not an effective replacement for it.
I moved to Syncthing when they asked me to move to ext4.
I'm glad I did. Now my phone and tablet are first class citizens
when syncing and I can have multiple roots shared between
different devices. I wish I switched earlier.
Syncthing is only for the sync component of Dropbox. If you have an always on node for syncthing and miss the web UI component of Dropbox along with the shared links and full text search, I've built Filestash: https://github.com/mickael-kerjean/filestash
Syncthing is great and has become a core part of my workflow. It's just really annoying that there's no iOS client. So I have this great sync service that only works across my Android phone, laptop and desktop, while my iPhone and iPad are stuck outside the loop. Which means I have to duplicate some of my workflow onto another service.
I moved away from Dropbox years ago, after it pissed me off on Windows (basically, the Windows client was ludicrously inefficient, and there were constant sync conflicts).
I switched to Seafile, backed by Azure blob storage - so much better than Dropbox. The Windows client barely uses any CPU, sync conflicts only occur when I'd expect them to, and of course you can sync files regardless of whether they are in a fixed "Dropbox" folder.
I have Seafile and Minio running in containers, so it was super-easy to setup, and is a doddle to upgrade too.
Maybe one of the most wanted feature in Dropbox (at least among developers) is a .dropboxignore file[0].
When Dropbox stops syncing symlinks to outside files and directories, the situations becomes a lot better. Placing node_modules/ or venv/ directories outside the the dropbox and just placing a symlink here, makes Dropbox a good option for code backups, again.
This is also one of the top voted feature requests on the UserVoice site for OneDrive - it's sat there for years with no action. I don't get why they wouldn't want to have this, given it would reduce the amount of data they have to store.
My intuition says that Dropbox should never have followed (soft) links outside the 'boundaries' of the sync folder. It never occurred to me to expect it to work like that.
I have, however, use folders under Dropbox to sync local files into (make a change, sync over into Db); or even have a Db folder for git repos added as a remote (commit a change, git push dropbox branch.)
Symlinks are a terrific way to duplicate the presence of files in multiple places.
When Dropbox allowed Symlinks, and recommended Symlinks, it fundamentally changed the meaning of what Symlinks were. It focused it on its technique to emulate and a way to direct Dropbox to synchronize folders not necessarily in the Dropbox folder.
I think the ‘correct’ behavior for Dropbox is to just back up the symlink. It should be treated like it was any other file.
Because now I can’t have a symlink in my Dropbox pointing to a machine-specific file outside the folder (like an env-vars file that’s different between MacOS and Linux)
What I don't understand about Dropbox in 2019 is that they are trying to limit features known to work without any issues. What's worse is that they do this with no particular reasons or explanations.
Finally! A symlink is a file like any other. You don't want sync software going off and "thinking" about what a symlink really means, anymore than you'd want sync software going off and "thinking" after finding porn on your computer. It is a user's responsibility to insure that a symlink is useful across sync'd computers, or to ignore the symlink.
A good test case is a MacOS Application Package. These often have internal symlinks that most users never notice, e.g. from "current" to a version of included software. A sync program that replaces the symlink with its contents simply bloats such an application, but it still works. A sync program that ignores a symlink breaks the application. In either case the mistake is "thinking" about the symlink rather than treating it like any other file.
There's still only one sync program that I know of that handles every issue like this correctly: Unison, written by a prominent computer scientist with astute community feedback. This is collectively a smarter brain trust than the sanctimonious support folks who have resisted my feedback at various sync software companies, sure that their unique approach is correct. Not only does Unison correctly handle symlinks, it also has a notion of an "atomic" directory, so that one doesn't for example hose a git archive modified at both ends, or a sparse disk image modified at both ends.
I use DropBox when I need the integration, to iOS or sharing with others. I sync the guts of each machine, for my private work, using Unison.
How is this different from before? All my symlinks reside at odd (but convenient for me) locations in my file system outside my Dropbox folder. They all point to locations inside my Dropbox folder. Everything works perfectly, unless I make the mistake of creating a symlink inside Dropbox that points out; those have always exhibited strange behavior so I stopped using them long ago.
If it's all on the same filesystem/partition you could use hard links instead, including on Windows (NTFS only though, and based on reading just now I'd forgotten that it's files-only).
It would also be interesting to see if on Windows it handles Junctions as hard links or soft - basically does this only affect shortcuts on Windows or also catch the less used filesystem option.
Any alternative suggestions? SyncThing that is discussed here seems to need you to manage your own always-on system, which I suppose can be implemented via a cloud server?
I've been using Dropbox for years but this change means I need to re-organise, so may as well look at other options at the same time. I really enjoy the ease of right-click to share, if any other service has replicated that.
That's too bad, thanks for the heads up. I use symlinks for the figures of my LaTeX papers, the actual figure resides with the scripts and data that generate the figure (many GBs usually) and in Dropbox I only have very lightweight text files and symlinks. That way I know my figures are always up to data with the data when compiling.
Any alternative suggestions? SyncThing that is discussed here seems to need you to manage your own always-on system, which I suppose can be implemented via a cloud server?
I've been using Dropbox for years but this change means I need to re-organise, so may as well look at other options at the same time.
For us techies this can be a big deal, but the vast majority of users do not even know what symlink is.
Personally I'm moving to Resilio Sync since these days I only use Dropbox to sync prefs and some files between devices. The idea of sharing the same folder between many users can be disastrous.
[+] [-] codetrotter|6 years ago|reply
But the solution is simple, just switch around which is the real file and which is the symlink.
So where you used to have symlinks like
and so on, remove the old symlinks and place the real files in ~/Dropbox/ and then symlink the other locations there. and so on.This is similar to what I do with some of my files in ~/bin/
Many of the files I have in my ~/bin/ are symlinks to files that live in git repositories.
For example, I have a few “alias commands” (shell scripts that wrap a longer command) in ~/bin/
(Aside: Why not aliases in my bashrc, you ask? Because I use a few different operating systems and eventually realized that rather than trying to unify OS specifics and shared aliases in bashrc it was much simpler to maintain the aliases as wrapping shell scripts.)[+] [-] Erlich_Bachman|6 years ago|reply
The real solution is to use other software than Dropbox, that plays by the rules and cares about its users.
[+] [-] huhtenberg|6 years ago|reply
Dropbox screws up - and you no longer have your core config files needed for basic system operation.
[+] [-] topologistics|6 years ago|reply
[+] [-] aleem|6 years ago|reply
Reversing the symlinks means Dropbox becomes the source of truth and the dependency on Dropbox increases.
Personally, I used this to easily backup my Downloads and Documents.
They just broke all clients using this feature.
[+] [-] cstejerean|6 years ago|reply
[+] [-] tommymachine|6 years ago|reply
[+] [-] yoz-y|6 years ago|reply
On work computers I do the same but with git.
[+] [-] Someone|6 years ago|reply
(I think that’s a fairly common strategy. I tried checking whether vim uses it, but got lost in https://github.com/vim/vim/blob/master/src/fileio.c; that file is too large to comfortably read on an iPad (try guessing how many lines of C it takes to ”Read lines from file "fname" into the buffer after line "from"”)
[+] [-] netsec_burn|6 years ago|reply
[+] [-] thenickperson|6 years ago|reply
[+] [-] Spooky23|6 years ago|reply
[+] [-] kccqzy|6 years ago|reply
[+] [-] ehsankia|6 years ago|reply
[+] [-] ntw1103|6 years ago|reply
[+] [-] CPAhem|6 years ago|reply
[+] [-] beambot|6 years ago|reply
[+] [-] donatj|6 years ago|reply
They were amazing software and now they’ve eroded away most of it such that they have very little over their competitors.
At this point the only reason I stay is they sync macOS extended file tags and comments; both things I make heavy use of. To my knowledge Syncthing doesn’t, nor Google Drive for that matter.
[+] [-] veidr|6 years ago|reply
But in 2019 it is basically an inferior and antiquated tool for syncing your own files.
I moved to the open-source SyncThing[1] some years ago, which gave me:
1.) the ability to sync any arbitrary set of folders I want, which of course completely obviates the need to care about things like this issue (i.e., no need to use symlinks to sync other folders, because you can just sync those folders themselves)
2.) the ability to actually sync folders that contain symlinks, as many types of software projects do (Dropbox and many other purported sync tools can't do that, which means there are many common types of folder that they can't sync without corrupting them by replacing the symlink with the contents of the symlink destination) EDIT: Or, have they fixed that now, and is that why they are making this announcement? I am not sure. Back when I used Dropbox for syncing, it couldn't sync a folder containing a symlink, but this may no longer be true. (?)
3.) better sync reliability
4.) better sync performance
5.) completely superior security story; end-to-end encryption means you are in control of who can access your files (no access for employees, governments, etc)
The tradeoffs are:
a.) a little bit more work to set up (but it's really just a little bit... I walked my dad through it over the phone... basically the same amount of work as getting your credit card billing setup on Dropbox)
b.) weaker story on mobile, no iOS app
c.) no "cloud" so you have to do your own (e.g., leave an iMac running 24/7 back at your house or something)
All in all, after 2+ years I am extremely happy with Syncthing, and I don't think products like Dropbox have a very strong case to exist anymore, at least not for the original purpose of syncing folders full of computer files.
That problem has now been solved better, way more securely, and for free. (Which is probably why Dropbox seems to be trying to pivot to become some kind of enterprise team commmunication hub.)
[1] https://syncthing.net (if on a Mac just install the Mac app and it will install the other components for you)
[+] [-] kranner|6 years ago|reply
> That problem has now been solved better, way more securely, and for free.
You haven't accounted for the cost and maintenance of the 24/7 iMac (or VPS) if one doesn't already have that, and not everyone does.
I'm also a happy SyncThing user but I wouldn't say it's as easy to use as Dropbox for the general user.
[+] [-] esoterica|6 years ago|reply
You really buried the lede right at the bottom didn't you? The entire point of a Dropbox type service is off-site cloud backups. If I have to buy and maintain a second server and leave it running 24/7 in my house (i.e. I'm not insulated against losing my data if my house burns down or a burglar breaks in) then clearly this product is providing an entirely different and far more limited service than Dropbox and is not an effective replacement for it.
[+] [-] Schoolmeister|6 years ago|reply
From the first paragraph:
"As of mid-2019, Dropbox no longer follows items outside of your Dropbox account that are linked to by a symlink."
In the next paragraph is explained how symlinks linking to files within your Dropbox folder still work.
[+] [-] rdslw|6 years ago|reply
IPO dates of most (once) cool tech startups signal time to search for replacement and time of approach change by them.
[+] [-] dietr1ch|6 years ago|reply
I'm glad I did. Now my phone and tablet are first class citizens when syncing and I can have multiple roots shared between different devices. I wish I switched earlier.
[+] [-] mickael-kerjean|6 years ago|reply
[+] [-] jplayer01|6 years ago|reply
[+] [-] GordonS|6 years ago|reply
I switched to Seafile, backed by Azure blob storage - so much better than Dropbox. The Windows client barely uses any CPU, sync conflicts only occur when I'd expect them to, and of course you can sync files regardless of whether they are in a fixed "Dropbox" folder.
I have Seafile and Minio running in containers, so it was super-easy to setup, and is a doddle to upgrade too.
Haven't looked back!
[+] [-] Avamander|6 years ago|reply
[+] [-] i386|6 years ago|reply
[+] [-] sebst|6 years ago|reply
When Dropbox stops syncing symlinks to outside files and directories, the situations becomes a lot better. Placing node_modules/ or venv/ directories outside the the dropbox and just placing a symlink here, makes Dropbox a good option for code backups, again.
[0]: https://www.dropboxforum.com/t5/Dropbox/Ignore-folder-withou...
[+] [-] GordonS|6 years ago|reply
[+] [-] delinka|6 years ago|reply
I have, however, use folders under Dropbox to sync local files into (make a change, sync over into Db); or even have a Db folder for git repos added as a remote (commit a change, git push dropbox branch.)
[+] [-] nashashmi|6 years ago|reply
When Dropbox allowed Symlinks, and recommended Symlinks, it fundamentally changed the meaning of what Symlinks were. It focused it on its technique to emulate and a way to direct Dropbox to synchronize folders not necessarily in the Dropbox folder.
[+] [-] Spivak|6 years ago|reply
Because now I can’t have a symlink in my Dropbox pointing to a machine-specific file outside the folder (like an env-vars file that’s different between MacOS and Linux)
[+] [-] kbumsik|6 years ago|reply
Why they are doing this recently?
[+] [-] criddell|6 years ago|reply
[+] [-] usaar333|6 years ago|reply
Now symlinks are understood by the server, but ones targeting content outside Dropbox break.
[+] [-] nashashmi|6 years ago|reply
Or could they be changing the use case of the platform to sharing files instead of backing them up.
[+] [-] Syzygies|6 years ago|reply
A good test case is a MacOS Application Package. These often have internal symlinks that most users never notice, e.g. from "current" to a version of included software. A sync program that replaces the symlink with its contents simply bloats such an application, but it still works. A sync program that ignores a symlink breaks the application. In either case the mistake is "thinking" about the symlink rather than treating it like any other file.
There's still only one sync program that I know of that handles every issue like this correctly: Unison, written by a prominent computer scientist with astute community feedback. This is collectively a smarter brain trust than the sanctimonious support folks who have resisted my feedback at various sync software companies, sure that their unique approach is correct. Not only does Unison correctly handle symlinks, it also has a notion of an "atomic" directory, so that one doesn't for example hose a git archive modified at both ends, or a sparse disk image modified at both ends.
I use DropBox when I need the integration, to iOS or sharing with others. I sync the guts of each machine, for my private work, using Unison.
[+] [-] krsdcbl|6 years ago|reply
[+] [-] djklanac|6 years ago|reply
[+] [-] dreamcompiler|6 years ago|reply
[+] [-] fencepost|6 years ago|reply
It would also be interesting to see if on Windows it handles Junctions as hard links or soft - basically does this only affect shortcuts on Windows or also catch the less used filesystem option.
[+] [-] telesilla|6 years ago|reply
I've been using Dropbox for years but this change means I need to re-organise, so may as well look at other options at the same time. I really enjoy the ease of right-click to share, if any other service has replicated that.
[+] [-] hprotagonist|6 years ago|reply
The only reason i have dropbox on my workstation is so that i can
and then share that link.[+] [-] JorgeGT|6 years ago|reply
[+] [-] telesilla|6 years ago|reply
I've been using Dropbox for years but this change means I need to re-organise, so may as well look at other options at the same time.
[+] [-] pier25|6 years ago|reply
Personally I'm moving to Resilio Sync since these days I only use Dropbox to sync prefs and some files between devices. The idea of sharing the same folder between many users can be disastrous.
[+] [-] TazeTSchnitzel|6 years ago|reply
[+] [-] TheUndead96|6 years ago|reply