File: android-deltas-sync/_etc/examples/basic-appprivate-storage/_readme.txt
This demo's PC-side scripts were run on macOS. It uses
app-private storage for both zips and content on the Android
12L phone. Changes made in config files are marked with '<='.
This must use the Termux home ("~") folder as app-private
storage; this is the only folder made visible to Android
file-explorer apps via Termux's Storage Access Framework
(SAF) interface. You also must use a SAF-capable explorer
to both copy zipfiles and access your content in this mode.
Fx, AOSP (a.k.a. Files), Material Files, and MiXplorer are
known to support this access today. For full info, see:
../../../_README.html#termux-app-private-SAF
Note that zips and content need not both use app-private
storage the way this demo does. In practice, you might use
app-private for zipfiles to optimize sync speed, and shared
storage for content to boost accessibility and longevity.
METADATA
App-private storage retains propagated symlinks, permissions,
and nonportable filenames:
NONPORTABLE FILENAMES
Don't need to be fixed here, because they are allowed in
Android app-private storage when unzipped, and are silently
munged to work on the exFAT proxy by macOS.
SYMLINKS
Are forged on the exFAT proxy by macOS, so they don't
generate perpetual diffs the way they do on Linux (though
they also won't register as symlinks elsewhere). On phones,
zipped symlinks in the initial-copy unzip are correctly
recreated in the Android app-private Termux home folder,
so there is no data loss here.
UNIX PERMISSIONS
Are retained in app-private storage (at least as much as
allowed by Android's filesystems and policies). They may
or may not make it to the proxy, but are smuggled to/from
Android in this package's zipfiles.
For more info on filenames, symlinks, and permissions, see
the main doc's:
_README.html#Nonportable Filenames
_README.html#storagemetadata
_README.html#Unix Permissions
IMPORTANT: UnixPermissions (phone)
Besides FROM/TO pathnames, this demo's phone config file also
changes setting UnixPermissions to True, to propagate Unix
file permissions from macOS to Android app-private storage.
This setting is preset to False only because of issues for
app-specific storage; see _README.html's "Unix Permissions."
Permissions are always copied to the PC during exports, so
there is no parallel setting in the PC config file.
But in general:
=> Use False for UnixPermissions on phones where content
will be propagated to app-specific storage.
IMPORTANT: CheckFilenames (PC + phone)
This example's PC and phone config files both also change
CheckFilenames to False to skip the nonportable-filenames
fixer step, because no filename conversions are required:
- Copies and syncs to the phone use the PC file's setting.
Nonportable names are allowed by Android in app-private
storage when unzipped there, and changed by macOS to work
on the exFAT proxy.
- Exports (backsyncs) to the PC use the phone file's setting.
The macOS Unix target supports Android app-private names,
and exports never update the proxy on Android. The proxy
is updated after unzip on macOS, which forges names to work.
But in general:
=> Use True for CheckFilenames when content will also be
propagated to Windows (or from Linux).