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.

  • OliMoli2137@piefed.social
    link
    fedilink
    English
    arrow-up
    1
    ·
    14 minutes ago

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

  • GlenRambo@jlai.lu
    link
    fedilink
    English
    arrow-up
    1
    ·
    24 minutes ago

    “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.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      2 hours 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.

    • jak0b@lemmy.mlOP
      link
      fedilink
      arrow-up
      7
      ·
      7 hours 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

  • redparadise@lemmygrad.ml
    link
    fedilink
    arrow-up
    4
    ·
    14 hours ago

    Doesn’t rclone also do the same thing but with many more features like e2ee etc?

    Setup SFTP remote along with bisync?

    • jak0b@lemmy.mlOP
      link
      fedilink
      arrow-up
      2
      ·
      13 hours ago

      rclone bisync can do two-way sync, yes, great tool, especially for cloud backends and more automated syncs. Synchi is a lot simpler and more focused: works over SSH, nothing needed on the remote side. The key difference is that Synchi shows you exactly what it’s about to do (copy A→B, copy B→A, delete in A, delete in B) and asks before changing anything. Conflicts get an interactive UI. No surprises.

      • redparadise@lemmygrad.ml
        link
        fedilink
        arrow-up
        1
        ·
        8 hours ago

        rclone also works over SSH, and isn’t needed on the remote side, rclone also shows you exactly what it’s gonna do with colored text and formatting along with conflict management, but yes it is a bit complicated and a step above nextcloud etc, although GUIs exist I haven’t tested them. Loking forwards to how a new tool focused on personal use specifically can manage to be more user friendly and adapt exclusive focused features for such, looks more approachable and simple.

        • jak0b@lemmy.mlOP
          link
          fedilink
          arrow-up
          3
          ·
          8 hours ago

          Thanks for correcting me! Honestly, I haven’t used rclone bisync myself so thanks for sharing it. I have to give it a try now. rclone definitely looks a lot more compex feature-rich tool. Synchi I think would be alot simpler to setup and works great for my specific use case of syncing notes and files between my devices. Perhaps, targeted users is the distinction? Anyways I need to try it and see what good things I can learn from it.

  • SayCyberOnceMore@feddit.uk
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    23 hours ago

    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.mlOP
      link
      fedilink
      arrow-up
      7
      ·
      23 hours ago

      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
        link
        fedilink
        arrow-up
        1
        ·
        11 hours ago

        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.mlOP
          link
          fedilink
          arrow-up
          2
          ·
          11 hours 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!

  • ray@lemmy.ml
    link
    fedilink
    English
    arrow-up
    3
    ·
    23 hours ago

    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.mlOP
      link
      fedilink
      arrow-up
      4
      ·
      22 hours 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.

    • jak0b@lemmy.mlOP
      link
      fedilink
      arrow-up
      5
      ·
      1 day ago

      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
        link
        fedilink
        arrow-up
        4
        ·
        1 day ago

        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.mlOP
          link
          fedilink
          arrow-up
          1
          ·
          22 hours 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.

  • Eggyhead@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    23 hours ago

    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.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      23 hours 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.