For folks looking for a Dropbox alternative, I recommend Syncthing [0].
Syncthing is a free software (MPL-2.0) cross-platform [1] and decentralized peer-to-peer file synchronization utility with end-to-end encryption, and with support for relaying [2].
Offering file watching without any extra configuration and supporting decentralized discovery though the mainline DHT are its most compelling advantages over Syncthing for me.
One major reason I use Dropbox (other than the fact that it has, for the most part, "just worked") is to get files from the cloud on an as-needed basis on iOS phones and tablets. Considering my home Internet connection is not good enough to handle outgoing requests (like a server), I still need an online location to store maybe 20-30GB of files at a low price (my Dropbox account is a free one with a lot of bonus storage) that can integrate with solutions like Syncthing or Librevault or anything else. What are the options for those?
Syncthing can be weird at first, LibreVault seems more like Dropbox but doesn't provide a server.
Try https://hubic.com/en/offers/ it was created by "The number 3 internet hosting company in the world" OVH works quite well if you don't mind the dated interfaces
If you're okay with spending a small amount of money, you could spin up a VPS somewhere and run Syncthing/Librevault on it.
For $5-$10 a month, you should at least be able to get 20 or 30gb of space.
Have they solved their discoverability issues? I haven't used it in a looong time but too often it would fail to sync two computers in the same LAN unless the daemon was restarted several times until they saw each other.
Could I rely on this just like I would rely on Dropbox to instantly get my files synced or do I still need a centralized option for that?
This was actually the question I had when I decided to try Syncthing again a few months ago.
I've been using it for a while now, and though I feel there's room for improvement, it's definitely much more reliable than it used to be before and I haven't had to restart the daemon multiple times.
As for your second question about instant syncing, there's syncthing-inotify [0] which detects file changes immediately (instead of 60 second rescan interval), but I haven't tried it yet.
For syncing outside your local network, Syncthing supports relaying, which I linked in my previous comment.
syncthing-inotify works great! I have been running Syncthing with this plugin for about a month now and I haven't had any problems with it.
I started using Syncthing for some of my projects after Dropbox stopped syncing files without notice for the third time. The failed Dropbox syncs were related to either C++ or Doconce+LaTeX projects where many temporary build files were being modified often. Syncthing doesn't seem to have a problem with these files, and it is even possible to configure Syncthing to ignore specific file patterns if you just don't want it to sync such files at all.
It isn't optimal, but it used to work. I kept C++ projects on Dropbox in addition to Git because I work on multiple computers and want to be able to continue where I left off if I get interrupted. I don't like the idea of having to commit and push to git for all work in progress, even if it is on a separate branch.
The default setup in Qt Creator is to have a build folder next to the sources, but after the first big sync failure I configured Qt Creator to always build outside of Dropbox. But I experienced failed syncs after that, even with only C++ sources inside Dropbox and when building Doconce+LaTeX projects.
I have relay disabled so I can only comment on the LAN experience. Been using Syncthing for about 6 months on Mac, Windows and Linux with great success and no discovery issue.
What about SpiderOak, if you still want something centralized?
If you want to access your own files anywhere, you're not really in it for the sync aspect, and you're willing to host your own, there's this great piece of software called OpenSSH, that implements remote shell access as well as a protocol called SFTP that you can use to remotely access files. There are clients available on all systems, frequently installed by default, it's incredibly secure - you may have heard of it. It's kinda new, and the up-and-coming thing in personal cloud software. The investors are really excited.
I've been using SpiderOak for over 6 years now, and three things haven't changed:
Their UI is crappy and laggy, and doesn't look like it belongs in any platform.
It takes forever to sync files between devices.
It sometimes gets confused when I rapidly switch between branches in a git repository, touching thousands of small files each time.
But I love the ability to pick and choose exactly which files and folders to backup and sync. SpiderOak adapts to my workflow, instead of demanding that I put my files in specific folders. If inefficiency is a necessary cost of combining this kind of flexibility with full client-side encryption, I can live with that.
I've been pretty happy with SpiderOak overall. I lucked out and got a coupon to get 'unlimited' space for relatively cheap, so I like that I can back up all of my machines without worrying about needing to pay more.
1000s of small files, or one rapidly changing file cause me problems as well. It's also annoying that each client has to decode new data whenever something is backed up on another machine. This causes my cpu to hit 100% on my laptop while my desktop is backing up a bunch of new files.
[Edit: Removed an incorrect statement about SpiderOak Hive.]
I agree, the UI is not great and it's quite slow. It often uploads the same files again and creates multiple versions, with no way to delete older versions of files at a folder or device level. The skewed non-linear pricing is also heavily biased toward those who use less but like the 1TB option, with the next tier below being a paltry 30GB.
I was looking fir a way to easily _move_ (not copy) a file on a different device through the syncthing interface. The alternatives I know of are scp and SFTP. However, in that case, you need to know the ip address of your devices. My devices tend to change networks often, so it would be nice to easily scp or SFTP to a device, through any (secure) means possible, without having to check their IP addresses every time.
Please let me know if you know of such a solution!
Yeah, so SCP/SFTP copy, not move (but you can delete the copy from the original computer to simulate that, which is your plan, I assume). Here's my solution:
I have a central SSH server where I store all my files. When I want a file on a given device, I pull it down from there. If I want to add a new file or update a file, I push a file up. Pretty simple. You do need at least one computer that stays in a constant location (typically at your house) to do this. From there, you portforward SSH to a high numbered port (it keeps every bot in the world from knocking, and some ISPs block 22) on your router. However, if you're like most of us, your ISP doesn't assign you a static IP. But, because your IP probably changes only rarely (probably only sometimes if your router goes down), you actually needn't use dynamic DNS. Furthermore, because you aren't actually publishing on that address, you can use any domain, regardless of ugliness, and there are plently of DNS services willing to offer you a subdomain for free. I reccomend freedns.afraid.org, myself.
It doesn't work for everyone, likely, but it works well enough for me.
> so it would be nice to easily scp or SFTP to a device, through any (secure) means possible, without having to check their IP addresses every time.
If these are public IP addresses, any DynDNS provider could work well.
If these are internal IP addresses chosen by DHCP and you control the DHCP server, pin the MAC addresses of the devices to fixed IPs. They will still do DHCP, but get the same IP every time.
You can use it as a way to bridge all computers. Basically, have all computers create a tunnel to this computer and then you can access them.
I do something similar with a small VPS, but it could be something at home. What I do is that all my computers automatically connect to this VPS and bind to a different port. This is with SSH (and autossh). If I want to access computer X, I can SSH to this VPS use the port that I know computer X has.
For your scenerio, you can forward this port to your local machine and run rsync -p to it...
Thank you for the suggestion! I like it, and it is somewhat what I had in mind for thing. You access all the devices the same way.
That, I would use maybe half the time. However, sometimes my devices are on the same network. What if both of my devices are on the same network? I think that I would prefer not to send the files through the internet in that case.
One solution for each vae would be nice (please share if you do have one). However, one solution for both would be nice.
Assuming your server is also at home, what will happen is:
Computer A > router > local server > router > Computer B.
Instead of:
Computer A > router > Computer B
You can use some scripting and configuration to get the second one if at home. But basically you have to have a way to guarantee that both devices are at home.
To make sure both devices are home, you can assign static IP at the router level to the devices.
Now, if both devices are wireless.
– Check you are home by checking the SSID you are connected to.
– If you are home, ping the other device static ip.
– If it responds, you can connect directly to it
Well, if you've got a computer in your house, you can use that as the server (as I described another post, above), and if it's in your house it would likely be on the same network as your other devices.
Does it have seemless integration with drag n drop plus sll this setup automatically on install? And on each supported platform? This combo is Dropbox's market.
I have been using Box at work and it is rather nice. It is fairly unobtrusive. Granted, I don't use the desktop integration just open stuff over the web page, upload files when I need. There is an interactive notes and presentation editing.
I think Dropbox's problem is mostly Google. I used Dropbox at home but once Google got their drive up to speed and it integrates with other things like Gmail and such, it is hard for me to justify using Dropbox. So I uninstalled it and just use Google for everything.
For folks looking for a Dropbox alternative, I recommend Syncthing [0].
Syncthing is great if your goal is to synchronize files between different machines. However, if you want to share files/folders with people who do not have a strong tech background it's not really an option.
rclone ( http://rclone.org ) is the perfect tool for that. It is a command line program which tries to work like rsync except copying to cloud storage providers (Dropbox, Amazon Drive, S3, Google Drive, B2 etc) . By default it will copy the files 1:1 file to remote object.
I use it to share stuff on Dropbox. I run Linux and have never installed the Linux client (if there is one, I don't know!)
My only problem with syncthing is how much CPU it eats up when you have a lot of files under sync, regardless of if you use file watch or not. Is there a way to reduce its tickrate so it isn't constantly checking files for changes?
You can increase the rescan interval in the folder settings (advanced settings section). If you use inotify, you can just set it to 0 to disable automatic rescans.
no you don't. i p2p my files and don't list trackers in their public database so don't need a login. offhand i'm not sure what you need to pay for, but i haven't needed those features -- i think they're targeted more around permissions and acls that individual use doesn't really require.
Syncthing is a free software (MPL-2.0) cross-platform [1] and decentralized peer-to-peer file synchronization utility with end-to-end encryption, and with support for relaying [2].
Check out their getting started guide [3].
[0]: https://syncthing.net [1]: https://docs.syncthing.net/users/contrib.html [2]: https://docs.syncthing.net/users/relaying.html [3]: https://docs.syncthing.net/intro/getting-started.html