For example, iOS has these features:

  • iCloud backup restore or peer-to-peer transfer, very early in the device setup process
  • Two ways for things to be stored in iCloud, each with a corresponding list of per-app (not per-folder) toggle switches in iCloud Settings
    • “Saved to iCloud” normal syncing
      • Requires apps to use the right APIs and to handle conflicting changes
      • Allows same data to be read and modified by multiple devices
    • iCloud backup
      • Available for all apps
      • Separate backup per device
      • Only downloaded when setting up a new device
      • In app sandboxes, only excludes tmp (Flatpak equivalent is somewhere in /run) and Library/Caches (equivalent to cache directory in Flatpak sandbox) by default
      • Allows apps to set isExcludedFromBackup attribute for specific files (useful for things that are easy to recreate via download but are expected by the user to not be automatically deleted)
      • Includes system configuration such as home screen layout
      • Backs up a list of installed apps without backing up their executables and assets
  • Synced list of previously installed apps, not separate per-device
  • HaraldvonBlauzahn@feddit.org
    link
    fedilink
    arrow-up
    2
    ·
    2 days ago

    Essentially, I use tar for backup, NFS / Samba for local file sharing, and git for syncing. (For specific cases, software like Zim wiki that stores to a git backend).

    And it is not that I have not tried alternative solutions - for example, I tried the Coda file system. But blending version-controlled syncing and file distribution leads to devilishly complex corner cases and failure modes.