this post was submitted on 22 Mar 2026
127 points (100.0% liked)

Linux

64135 readers
363 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
 

cross-posted from: https://lemmy.ml/post/44815211

Two-way file sync, no remote agent needed

Today Synchi is finally public! It's designed for syncing files between two locations (local or over SSH). It detects conflicts, and lets you decide what to do.

Why not rsync/Unison/Syncthing?

  • rsync has no memory between runs and is one-way
  • Unison needs to be installed on both sides
  • Syncthing requires always-on daemons

Synchi runs on demand, works over SSH, and only transfers what actually changed.

I use it daily for syncing a shared folder between my machines and an android phone. Works great in combination with Tailscale/WireGuard so that you can sync files remotely.

top 26 comments
sorted by: hot top controversial new old
[–] brokenwing@discuss.tchncs.de 9 points 6 days ago (1 children)

Does it work on smartphones

[–] jak0b@lemmy.ml 5 points 6 days ago (2 children)

Yes! On android with Termux terminal.

(note: If you sync between computer and phone you don't need to install it on your phone. One side only is enough.)

[–] brokenwing@discuss.tchncs.de 4 points 6 days ago (1 children)

Yes, I would like to use this as an alternative to syncthing. Arch Linux and Android. So how the phone should be connected? Do I need to open my phone's SSH port?

[–] jak0b@lemmy.ml 3 points 6 days ago

Yes, you do need SSH set up on your phone. I'm using the same setup (Linux + Android). I wrote a short tutorial for it here: https://jakobkreft.github.io/synchi/termux.html

Also I use it with Tailscale so I can sync from anywhere not just local network.

[–] W98BSoD@lemmy.dbzer0.com 2 points 6 days ago (1 children)
[–] jak0b@lemmy.ml 2 points 6 days ago

iOS is tricky since there's no easy way to set up SSH access to the filesystem like you can on Android with Termux. So unfortunately not really supported at the moment. If you have a jailbroken device it might be possible, but that's not something I've tested.

[–] Cyber@feddit.uk 6 points 6 days ago* (last edited 6 days ago) (1 children)

Genuine question: How's this different to rsync?

I have rsync installed locally, but not remotely and I'm able to sync changes, so how does this differ?

Edit: ok, I read the article a bit further and found the rsync comparison

[–] jak0b@lemmy.ml 9 points 6 days ago (1 children)

Great question! Let me sum it up here for others:

rsync is one-way only and has no memory between runs, every execution starts from scratch. Synchi is two-way, stateful (knows what changed since last sync), and content-aware (uses hashes, so no false positives from timestamp changes). It also handles conflicts explicitly instead of silently overwriting.

That said, rsync is still the better tool for backups and one-way mirroring. Synchi is for when you need true bidirectional sync.

Here is also a comparison with unison and syncthing: https://jakobkreft.github.io/synchi/why.html

[–] BB_C@programming.dev 2 points 5 days ago (1 children)

Maybe I missed it, but you don't seem to mention anywhere sub-file sync (binary diffing) support (or presumably the lack of it), which is very important for fast syncing when files actually change!

[–] jak0b@lemmy.ml 5 points 5 days ago

You are correct! no sub-file sync / binary diffing at the moment. It was my deliberate choice to keep complexity down. In practice, text files where diffing helps are tiny and transfer instantly anyway, and large files like images and videos almost never change partially. The main case where it would matter is something like large database files or VM images. That said, it's not off the table for the future!

[–] grapemix@lemmy.ml 2 points 5 days ago (1 children)

Speed conpared to rsync? Hash speed and cpu load compared? Need shell access for ssh? What about two devices across firewalls and internet which you can't control? I think one of the usecase is only sync when you have WiFi. Still want android apk for my lazy ass. Good project

[–] jak0b@lemmy.ml 1 points 3 days ago (1 children)

Thanks! I've done some testing, nothing scientific, but I can tell you it transfers at about the same speed as other tools I tested, usually limited by network speed. I spent quite some time optimizing how small files are packaged together for transfer, so there's no slowdown even with many small files compared to a single file of the same total size. Android APK idea is not bad though! I've published 2 Android apps before so will definitely look into it. Current Termux terminal approach is definitely not very user friendly.

[–] grapemix@lemmy.ml 1 points 16 hours ago* (last edited 16 hours ago) (1 children)

Syncthing is pretty unmaintained now, community worries about it get abandoned multiple times. Stick around and introduce your app to those future post and your app will shine. If you are into serious backup, i would look at bareos,but it is way overkill for most ppl and old too, but very good backup pro sumer lvl open source solution. I once tried hard to shop around

[–] jak0b@lemmy.ml 1 points 13 hours ago (1 children)

Thanks for the kind words! To be fair, Syncthing itself is still actively maintained (they just released 2.0), it was the official Android app that got discontinued due to Google Play issues. Community forks still exist on F-Droid though.

But yeah, Syncthing and Synchi have different workflow. Syncthing needs daemons on all devices and can't sync to a mounted drive, NAS path, or local folders on the same machine. Synchi is on-demand and doesn't care where the two roots are. This is also why I started working on it. I used syncthing for a few years before that.

[–] grapemix@lemmy.ml 1 points 4 hours ago

That's what I got confused. Thanks for clearing thing up.

[–] OliMoli2137@piefed.social 2 points 5 days ago

Hi, nice project. I already use rclone in bisync mode, so it would be nice if you explained the differences.

[–] 68silver@beehaw.org 2 points 5 days ago (1 children)

I will look at this as a replacement for Luckybackup.

[–] jak0b@lemmy.ml 2 points 5 days ago

Thanks! If you just need backup, with Synchi you set the 'force=root_a' in config, otherwise its bidirectional sync. If you need pure backups, rsync or similar might still be the better fit as they have some backup specific features.

[–] ray@lemmy.ml 3 points 6 days ago (1 children)

I love the concept for this. Syncthing is pretty good but it is annoying to have it running all the time on Android.

I'd love to use something like this to sync my Obsidian md files between computer and phone just when needed. I suspect this could be baked into to an Obsidian plugin to make it pretty seemless for folks.

[–] jak0b@lemmy.ml 4 points 6 days ago

This is exactly how I use Synchi! Same idea but I use Logseq instead of Obsidian (very similar open-source alternative, worth checking out). Works great for syncing markdown notes between computers and my phone on demand. Of course I need to remember to sync before switching devices, but I prefer this then constant running in the background.

Haven't thought about an Obsidian/Logseq plugin but honestly that sounds like a great idea... For now it's CLI only, but I can definitely see the value.

[–] GlenRambo@jlai.lu 1 points 5 days ago (1 children)

"Synchi does not try to be real-time, automatic, or invisible."

What would be the down side if I tried to automate the sync. Say every 5min on Linux to android.

[–] jak0b@lemmy.ml 1 points 5 days ago

Nothing wrong with that at all! You can set up a cron job to run Synchi every 5 minutes and it would work just fine. The only minor downside is some wasted compute since it rescans and hashes everything each run, even if nothing changed. For most files like text it's negligible though.

In the future I might look into a lightweight daemon that uses Linux filesystem notifications (inotify) to trigger a sync when something changes.

[–] Eggyhead@lemmy.world 2 points 6 days ago (1 children)

This might be good on Steam Deck for multiple games that have carry-over data. Just mirror the save data folder of one proton directory into that of the follow-up game’s directory. I assume you can go back to the first game to unlock more stuff to carry over, and not have to manually copy-paste the save folder each time. Just run a sync.

[–] jak0b@lemmy.ml 1 points 6 days ago

I'm not too familiar with Steam Deck, but that sounds like it would work! As long as you can point Synchi at both save directories, it would keep them in sync and save you the manual copy-paste.

[–] dessalines@lemmy.ml -1 points 5 days ago (1 children)

Syncthing was made for this and has been around for almost a decade now.

[–] jak0b@lemmy.ml 11 points 5 days ago

I used Syncthing for years, it's great (if you use it and you are happy, then you dont need to switch), but they are quite different. Syncthing requires daemons on all devices and can't sync two local folders on the same machine. Synchi is on-demand, runs only on one side, and doesn't care where the two root folders are.

I wrote a more detailed comparison here: https://jakobkreft.github.io/synchi/why.html