Best sync software in my view. The only downside is that there is no good iOS app.
I think the developers made the right decision focusing the software on peer to peer sync (i.e., not expanding to nearby “cloud features”: backup, photos, videos, office, etc).
Syncthing is like the reliable, quiet roommate who always does their dishes, whereas dealing with different file systems feels like trying to figure out who left their half-eaten pizza on the couch.
iOS literally doesn't have "just there for storage" directories that are not icloud. Either you use the photos pool, or you use icloud, or you use per-app directories that are local to each app. But then those directories cannot be accessed by other apps. Even if access to individual files is implemented, it's often very buggy.
Say you have a pictures directory shared via Möbius Sync. Then you want to edit one of the pictures with a pictures editing app that is not the builtin photos app. The app crashes, or cannot save an edited copy of the file into the same directory. I encountered this in real life.
Apple has a “files” app that lets you access your “home directory” on the phone. It def has “just there for storage” space. It’s literally the best way to access/delete some log files.
That directory doesn't work with Möbius Sync however. It gives an error when you try to set it as the local path for sync. Also, I can't figure out how to access that from Linux via ifuse: https://github.com/libimobiledevice/ifuse/issues/58
> iOS literally doesn't have "just there for storage" directories that are not icloud. Either you use the photos pool, or you use icloud, or you use per-app directories that are local to each app.
Isn’t this no longer the case
for the last 5 years or so?
‘Files’ allows to access local non iCloud folders and every app with the right entitlement can write/read there.
You can even integrate your own cloud service into ’Files’ making in indistinguishable from iCloud (in some ways at least).
Working copy has some of doing this. I had it syncing my logseq notes and it worked fine (other than merge conflict type things). The setup was fairly convoluted though.
iOS effectively blocks all background apps from accessing the internet except a few kb per sec. You are forced to pay apple for the convenience of a cloud backup. Walled garden dark pattern
- Syncthing is available in the Play Store. If it wasn't, I could use F-Droid or simply download the app from Github.
- It works in the background and it has access to my folders. I can take a picture and few seconds later it's on my PC without having to change or move anything.
Not saying that iOS is bad, but I felt tied when I had to use it. It's not for me.
I just found out it's a regulation from France regarding encryption (mostly declarative paperwork), so it's not an Apple App Store thing. Seems like Apple's App Store enforces it, but maybe not Play Store? And so either it may be published but may not be in compliance with regulations, or SyncThing did the paperwork but Mobius Sync did not.
"The only downside is that there is no good iOS app."
That's a dealbreaker for iOS folks, though.
I hate the mission creep Dropbox has embraced, and would definitely consider something else, but I need access to my stuff on Windows, MacOS, and iOS. Anything that doesn't hit all three notes isn't a contender.
Is there anything that is a dealbreaker for "iOS folks"? If usability would have been a dealbreaker they might not have been on iOS in the first place.
Let's just look at Syncthing not being on iOS - Apple makes sure things like Syncthing can't be on iOS. Mobius Sync does a trillion workarounds to give a semblance of being on iOS. So maybe "iOS folks" should reach out to Apple talking about why softwares like Syncthing (which is top notch!) is not on "iOS".
I mean for heaven's sake Apple keeps devices so limited and they themselves don't write softwares to fully utilise a device's capacities and features and don't let anyone else write them. I was reading Logic Pro on iPad comments a day ago and "iOS folks" instead of being enraged at Apple giving peanuts in terms of capability on a fully capable device (that too after years and then not opening it up for other devs), they were going crazy as if Jesus just made third appearance on the fruit company website.
Other third party cloud storage providers seem to have no issue developing decent apps and there are APIs that allow them to be integrated in a similar way icloud is. So I’m not sure this is entirely on Apple…
Toys or not, they are incredibly powerful devices that are very much locked down for some arbitrary reasons.
Any sort of basic interaction outside of their own ecosystem even through established standards and protocols is made difficult or impossible.
Case in point, I wanted to transfer a pic from an Android phone to an IPhone and was surprised to find that ios doesn't allow bluetooth file transfer!
It is completely ridiculous to think that you need to involve a third-party app/service or device to transfer small amounts of data between two very expensive communication devices sitting next to each other.
>Any sort of basic interaction outside of their own ecosystem even through established standards and protocols is made difficult or impossible.
Weird. I interact with ALL SORTS of other systems via established or even proprietary protocols using my iOS devices.
>Case in point, I wanted to transfer a pic from an Android phone to an IPhone and was surprised to find that ios doesn't allow bluetooth file transfer!
This is the kind of thing that Android people like to complain about, but the complaint is based in a failure to appreciate that iOS doesn't work like Android.
There's only very limited interaction with the file system in iOS. This is by design. Complaining about that is like complaining that the original Mac had no command line. It's missing the point.
Sharing photos between phones is most often done via messaging or email. That works beautifully. In neither case is a third party service required.
There are additional avenues for photo sharing between two iOS devices, but those are features of the platform. It's not a failure of iOS that they don't work with Android.
This is the kind of thing Android people complain about, but it never comes up for iOS people. Sharing a photo from a computer involves plenty of "third party" actions, too; it's just not a big deal. It's simple and intuitive.
>>Case in point, I wanted to transfer a pic from an Android phone to an IPhone and was surprised to find that ios doesn't allow bluetooth file transfer!
>
>This is the kind of thing that Android people like to complain about, but the complaint is based in a failure to appreciate that iOS doesn't work like Android.
I'm going to have to disagree with you here. Airdrop is basically the same thing as Android's Quick Share/Nearby Share, utilizing BT to find and pair devices, and then perform a direct wifi transfer of data. Android<->Android works no problem. iOS/MacOS<->iOS/MacOS no problem. Hell, I can even do this between Android devices and Windows/Linux machines. But Android<-/->iOS/MacOS - FOR NO GOOD REASON other than to keep them separate for capitalist reasons (doesn't matter what excuse you give it, brand differentiation, brand protection, walled-garden security - they're all excuses at the end of the day).
>There's only very limited interaction with the file system in iOS. This is by design.
In response to that, Apple can very easily extend the functionality over the API-layer to allow the sharing of, AT LEAST, photos and videos between Android and iOS/MacOS devices without having to worry so much about this issue. No need to give direct filesystem access.
>iPhones are just toys that don't get real work done.
That speaks more to your failure than to iOS's. I've been getting meaningful work done on iOS for a decade.
It sure is popular for a certain sort of HN poster, presumably deeply insecure about their own choices, to drop in and do their best to shit on iOS whenever anyone says something positive about it. It's predictable as clockwork, but as useful as tits on a bull.
which tool besides syncthing can do automatic backups of my phone? by automatic i mean copy photos and other data to a second device of my choosing as soon as they are created.
the primary use for syncthing on my phone is to make sure data is backed up immediately.
i have yet to find an app that has the resilience and flexibility of syncthing for this purpose.
apart from that the primary issue i have with syncthing is that the app on a device can not tell me if all data in a particular folder is fully copied to the other device. it only tells me if all local folders are complete.
it also gets confusing when you have more than a few devices and sync between all of them. i recently discovered that i had a set up A<->B<->C but A and C were not connected. i never noticed because A and C were always in sync, until device B died. but it took me some time to notice that because i didn't realize that i missed to connect A to C directly.
it would be nice to have some way to get an overview of the whole graph to see what syncs to where.
>automatic backups of my phone?
Full Android phone backup to a drive can be done with Seedvault on a schedule. I think you are asking about automatic upload though. I use Nextcloud to auto upload new pictures to my server as well as for Seedvault backup.
yes, automatic upload. schedules are impractical for phones that are not connected to wifi on a schedule.
i also occasionally use the phone to take photos of items that i want to process on my laptop right away. syncthing is faster and more convenient than taking my camera and then moving the sd card from the camera to the laptop.
for nextcloud i would need to set up a server that probably also needs to be always online. syncthing allows me to backup to my laptop and is opportunistic about it, ie whenever both are on wifi.
i am also using syncthing to manage my audio files. on the laptop i decide what i want to listen to by copying the files into a specific folder, and that gets copied to the phone. when i am done with a file i delete it from the phone, and that gets synced back to the laptop. syncthing is perfect here, and so using it for backup in the other cases is worth it over having yet another solution.
iMazing can perform wifi-based backups and there is an included tool (iMazing mini I believe) that hangs out in the menu bar running in the background to perform scheduled backups. Requires iPhone and Mac tho.
Is there a way to leverage this software and deploy something like a self hosted Google drive that also allows us to generate public links for sharing ?
It is pretty nice - I've been using it for over a year to sync files between my Windows desktop and 14" M1 Pro.
I've only come across a few hiccups:
- Sometimes MacOS updates "break" Syncthing (fairly easy to fix, just have to re-authorize permissions)
- Sometimes you end up with a (large) file/folder syncing that you don't want to sync.. Trying to sneak in an ignore rule after the fact and delete the file/folder from the device you don't want it on? That usually doesn't go over well.. I usually end up having to pause sync and fix the resulting conflict manually.
There is. Check out Mobius Sync - it’s as fast as PC on foreground and supports background syncing (albeit slower). You do have to pay a little but it’s worth the cost and you get it forever. I use it routinely to sync all my files on PC on the go.
It also phones home by default unless you turn it off (via crash and usage reporting), and in the default vendor-provided state grants arbitrary remote code execution ability to the developer (via unattended auto update which is on by default). Fortunately most distro packages and docker containers disable this dangerous behavior
> in the default vendor-provided state grants arbitrary remote code execution ability to the developer (via unattended auto update which is on by default)
I find this a curious, borderline alarmist framing of the automatic update mechanism. Many pieces of software have automatic updates. What you say is no less true for common programs like Firefox or Google Chrome.
Obviously you have to consider your threat model, but the number of people willing to trust a specific Syncthing binary they're downloading from the internet, but who are wary of trusting published updates going forward, must be relatively small.
(I am a Linux user and use the OS packages rather than automatic updates, but automatic updates are quite common outside of Linux distro packages)
It also connects to many "Discovery" servers on the internet in its default configuration, which you don't need enabled if you're just syncing between machines on an internal network.
Usage reporting. Crash reporting is on by default without asking, as is use of the public relays.
The arbitrary remote code execution vulnerability is much more troubling and critical, however. Most people don't realize that by running syncthing they grant the syncthing developer the ability to execute any code they want on their machine (including the ability to read or exfiltrate any file on the filesystem).
Even after disabling crash reporting, auto-update, relays, discovery, etc, it will still connect to the internet. It's actually very difficult to make it behave.
The only solution is to blank a few URLs in the configuration for things that can't be disabled. Then at first sight it seems to work... But you check your firewall logs a few days later and what do you know? Some dropped connection attempts.
Still, there aren't many alternatives that work as well as SyncThing, so you gotta pick your battles...
Which region are you using? I’m not sure with the case in other countries, but in China we buy Apple accounts for several CNY ($1~$2 in US dollars) to bypass region restrictions.
Syncthing is excellent. I’ve used it for years to keep my development folders synced between mac, linux and windows, and except for some initial figuring out of ignore patterns and the occasional hiccup with filenames that windows can’t handle it has been great at doing what it needs to and getting out of my way.
(I of course also use git, but syncthing lets me choose when I push while still having all my work on all my machines.)
> occasional hiccup with filenames that windows can’t handle
My only complaint so far and I've been using it for years.
At first it started as a way to have my Keepass file in sync between computers, and evolved from that.
I use it to store most of my private git repos and have been doing so for years now without a single issue. I do this:
cd ~/Sync/git
mkdir reponame
cd reponame
git init --bare
cd ~/work
git clone ~/Sync/git/reponame
I guess this could break if I do a push and then shut my laptop lid before it syncs, and then do some more work on my desktop, push, and then go back to my laptop. That hasn't happened though. If it did, it should be trivial to fix.
There was some other comment near here about ignoring .git directories. I guess they're using it to store the working directory rather than just the repository, as there is no .git directory stored in ~/Sync/ in my situation.
not sure what happens if you commit on two devices before syncing, but the "worst" that happened to me is I get an index conflict, in which case it's easily fixed by 'git reset'
Yeah, you need to add .git to the ignores. Works very well when you have only one repo checked out, for instance to auto-sync a deployment while you type, without having to commit and do CI/CD. With more than one repo you should be sure they are all on the same branch/commit before you sync. If not, you typically get a mess that requires some git-foo to clean up!
I would make sure that there's a `.stignore` file that's identical to your `.gitignore` (except for secret keys/configs you'd like to sync on your devices) in each of those repositories.
I use it for uploading pictures from my phone to my "private cloud" (an old RaspberryPi) and it works like a charm. I then move the uploaded pictures into organized folders, which also makes it delete the pictures from my phone, thus saving space.
Using resilio (which is NOT open source, of course and is actually kinda abandoned) until they implement selective sync (also "cloud" files browser). This is THE feature that is the deal breaker for me to switch. No, I don't sync hundreds of gigabytes from my personal cloud to my fokken phone, or even laptop, or even work PC. Still want access to all of them on demand.
My workaround with syncthing is to have several smaller folders that I only add to devices as I want them, and a common folder across all devices. It works well enough.
And - yes - a program like Resilio/Syncthing is the paradigm shift to how you use your computers, if you're a serious user and have more than one machine (incl. mobile devices).
Nextcloud also works like this on the phone. Easy to access everything, but the files only get downloaded on-demand. I love it because I also auto-upload my phone pictures, downloads and video, and sync my contacts and todo with it too. And it can share any of the files via url too. Very useful.
On PC, you also selectively sync folders. I dunno about access to all the files though. Definitely works in the browser, but on PC, you either sync the folder or don't.
Been using Syncthing for a year or so to sync plaintext notes across my phone and PCs. Worked great, so then I began using it to sync Retroarch save files between a spare Pixel 2 I use for gaming and my PC. Worked even better! I could play games on my PC, and then continue on the go.
Recently, I switched completely off cloud storage to just using Syncthing and I love it.
Despite some early mis-steps with Syncthing - mostly me just failing to understand how best to use it - I now count it as one of my favourite tools.
Rock-solid, gracefully handles long periods of one or more machines going offline (eg personal use computers in a home network), partly configurable with text files. The way it can be set for one-way syncs also opens up new use cases.
I use it for syncing documents, video capture, certain config files - even my ROM collection to my Steam Deck.
The only place you really shouldn’t use it is on Git repos - something that is probably obvious to anyone who has used a git branch, but worth re-stating. For a simple repo with only a main branch you want on just two machines - eg dev desktop and laptop - you might get away with it for a little while but it’s extremely brittle and will eventually trip you up - through no fault of Syncthing or Git, I should add. Just fundamentally incompatible paradigms.
Used syncthing to:
- transfer executables from my home to a ship (over sattelite link) in Indian Ocean. Much better alternative than sftp.
- sync filesystems while doing on-going (several months of testing) migration from on-prem to mixed cloud (google/azure).
Requires a bit of understanding why conflicts can happen (when using more than 2 hosts), once understood works like a charm. Was never disappointed, solid work.
For iOS, I placed a syncthing folder inside my iCloud directory and it works fairly well.
My MacBook, an always-on Pi, and a few other boxes run syncthing for a directory full of Markdown files that I use with Notational Velocity[0] on Mac and 1Writer[1] (highly recommended!) on iOS. Using it this way for a couple years and it works well, occasionally go through and diff the sync conflict files that slowly accumulate, small hassle that is worth the squeeze IMO.
While syncthing is excellent and I use it backup photos from my phone to my private cloud, it can sometimes glitch and delete files. I haven't got to the root cause yet, so I can't tell you what to do, but there's a way to recover your data in case of accidental deletion by syncthing. Make sure you enable "file versioning" on both your clients and server. I use the "trashcan" option. So in case a file is deleted, syncthing saves it in a folder for a pre-selected number of days instead of deleting it.
FWIW, never happened to me with Synching, but either way it's best to separate sync software and backup software. Sync might work flawlessly, but the user might make a mistake which would quickly wipe the files across all devices.
I use borg for backups, highly recommend
Does anyone have experience with Syncthing in high-latency connection scenarios, for example across continents? I need to bring and keep up to date tens of TBs between a couple of servers very far apart (~200ms ping). Almost everything I've tried transfers at a fraction of the speeds possible. The exception is Rclone where I'm able to properly saturate the connection.
Thanks for the suggestion! I'll look into it. I just double-checked and it seems the ping I'm dealing with is just a little bit above their recommended limit
Syncthing is amazing. Dropbox was the trail blazer, but then of course became enshittified. Syncthing is everything I could wish for, it's nerdy enough there's knobs to tweak, but it "just works" out of the box and I can install it on my Dad's laptop to back his stuff up etc.
Love, Love, Love Syncthing.
I've used Syncthing in the past to keep different volumes in "sync" in a distributed system. The API was simple enough to plug into an orchestration framework, and for quick/dirty projects it's phenomenal.
Right now I'm actually using it for a very small minecraft server on Fly.io. The game server runs on a "bigger" instance, and there's a web server running on a much smaller (and therefore "free") instance, for displaying the game map and similar things. Syncthing copies the generated squaremap tiles to the webserver, so when the game server is down, the map is still available
I remember reading somewhere that the best software does what it needs to do and then gets out of your way...and it was referring specifically to Syncthing!
I use this to exchange files with my family. We have a shared folder, like "d:\family share", and everyone can drop there whatever they want to share. Works really well with large files, I love it how gracefully it handles network events, like when the laptop drops wifi, or when you make the computer sleep during transfer.
I've been using it for a couple of years. One problem I have is that the idle cpu usage goes up to 10-20% after a while on my Mac. Drops back to ~1% after restarting the app
I sync about two hundred thousands of files without any problems, especially if your aren't changing them all the time. The only issue I can imagine is initial sync with so many files might take a while, even if total size isn't huge.
As for several terabytes, for me it's a bit less than a terabyte in total for all synced folders, but also can't see why it wouldn't scale up. I guess similar, initial hashing might take some time, but otherwise it should handle it well.
I actually have this exact use case. About 25MM files, ~20 TB total. Lot of directories. Many servers (~10), only a few that have the exact same synching file/folder setup (in other words, some servers have only video, some have only code, some have it all, etc, you get it).
It works... pretty well. I won't lie and say it works perfectly with all of our other file utilities and scripts we run, but 95-97% of the time I never think about it.
I use it with SyncTrazor on Windows Server deployments as well as Debian servers and yeah, I could be happier, but I highly doubt there's anything out there that can beat SyncThing overall.
Just know that with that many files the initial scans and DB building will be brutal, and the periodic syncs and rescans will be taxing. Highly recommend getting cheap 1-2U servers with dual sockets and lots of cores/threads - multiprocessing goes a long way in doing the file hashing.
EDIT: I will add that I only use it on servers and not on any client/desktop machines, so I can't vouch for its use there.
that is a hard problem. it depends on how frequently the data changes, because syncthing or any other backup solution may be to slow to keep up. one of my clients eventually switched from rsync to gluster. instead of making backups, gluster writes multiple storage servers in parallel when files are changed, thus ensuring that there are multiple copies right away.
it's not the perfect solution though because when one server is offline for a while and needs to catch up that too is very slow. the only solution there i find is to have enough redundant servers that you can afford to have a server go offline and not worry about getting it back online quickly.
I've been successful with syncthing up to 2tb (never tried higher) with the caveat that I only have it function between two hosts and only one host is the writer.
Litestream author here. I haven't personally tried Syncthing on SQLite databases but I suspect it wouldn't work well. Syncthing doesn't have any concept of SQLite's locks so even in the best case scenario where you only have one writer and the replica is read-only, the reader on the replica would have pages changed out from under it by Syncthing and that would appear corrupt to the reader.
One case where you could make it work is if you sync'd across multiple computers but only used one at a time. I mean, it's still dangerous but it seems possible.
Syncthing "just" syncs files. Near instantly, which could mean a delay of a few seconds to maybe even a minute. And it won't de-conflict changes beyond saving the "bad" version in a file like `sqlite.db-syncthing-conflict-20230101T043044`. (Not an issue if you only have one host changing the database file)
I like it and IMO it does what it does well. But litestream can "Continuously stream SQLite changes" (pulled from https://litestream.io/, I've never heard of it before). It seems like that's litestream's killer feature, and I think syncthing would leave you wanting.
Not really, it can't resolve a conflict inside the file and can't enforce a distributed lock on changing the file. Ultimately there will be ways for the file to corrupt or get out of sync, especially if multiple writers are present. There might be a way to make things work better with SQLite's more recent WAL mode but I'm not familiar with it.
I keep wanting Tailscale to offer a "tailnet API" whereby you can bundle a tailnet into your app, and users can connect to other instances of the app (whether their same account or other people sharing parts of their app/data) seamlessly: E2E encrypted, NAT busting, it just works.
Think about it: mobile and desktop apps no longer have to upload things to some third-party service to share with yourself or a group of people. You could set up your own server of course but that requires technical expertise. The mass market could share data, sync, and communicate, straight from their devices, without any service hosting their data. It's just all on the private network.
There's probably a billion-dollar market there (or more) if someone can figure that out for a lay audience: virtually unlimited, encrypted private networks on-demand that require no setup.
Not sure if this is exactly what you're describing but I noticed the open-source Diablo engine DevilitionX has Zerotier built in to allow online multiplayer sessions.
It can be embedded in a program, but it doesn't automatically manage devices on a tailnet; i.e. there's no way to add all users of an app to the same tailnet (they have to explicitly create a Tailscale account and sign in and share and join) - AFAIK.
If you use wireguard or something similar that gives every client their own private and encrypted IP then you don't really need syncthing. You can just use rclone or even rsync commands that point directly at the appropriate client IP in the mesh network. Syncthing is still useful though for its continuous syncing support and overall UI.
I had about an 80% success rate with it, dragging my MacBook Air to about 30 countries around the world. It was tremendously useful at a time when storage was far more expensive and internal drives much smaller than they are today.
Often when it didn't work, I could just leave the computer running in the hotel while I went out and did touristy stuff, and by the time I came back things had sorted themselves out.
Private networks are one part of the solution. Syncthing synchronizes, and for anyone who has ever tried it, it's not just two rsync's back and forth, whether ports are open or not
Private networks are old and busted; zero-trust & E2EE is the new hotness. (well, if 14 years is considered new)
The idea of a network as a delineation of security or trust is inherently flawed and should be considered an anti-pattern. Reliance on "private" networks merely moves attacks to the network level, making a very large target and exposing more at once. Zero trust is where the whole world should be moving: explicit authorization added at a fine-grained level to each thing each user wants to access. But people haven't been exposed to this idea yet in their day to day lives, so they can't let go of the old paradigms of firewalls and networks.
I think the developers made the right decision focusing the software on peer to peer sync (i.e., not expanding to nearby “cloud features”: backup, photos, videos, office, etc).