Guide and reference
Requirements
pālana requires macOS 14 or later. It uses command-line tools on the Mac and remote hosts according to the operation being planned.
SSH on the Mac#
pālana runs the system SSH binary at /usr/bin/ssh. It uses your
~/.ssh/config, keys, agent, and jump-host rules. Prepare
noninteractive access: hosts must connect without a password, passphrase, or
host-key confirmation prompt. Use the SSH readiness
test before browsing a remote host. No separate SSH installation is required.
rsync on the Mac#
pālana detects the installed rsync binary and its version. It supports openrsync with a smaller flag set. See the remote-host requirements below for the tools needed at the other end of a transfer.
GNU rsync 3.1 or later is preferred and can be installed with
brew install rsync. It provides the transfer progress bar and
-s (--protect-args), which sends spaces and shell
characters in remote paths without shell interpretation.
pālana checks the common Homebrew and MacPorts locations before the system path. It records the binary and version, then selects its flags without a setting.
rsync on remote hosts#
Between two SSH hosts, file transfers use rsync only when the source has rsync 3.1 or later, the destination has rsync, and the source can reach and authenticate to the destination through the forwarded SSH agent. Agent forwarding lets the source request authentication from the Mac's SSH agent; the private keys remain on the Mac. The destination's name must also resolve on the source host.
If those conditions are unmet, file copies stream through the Mac using
tar, and copy-based file moves refuse. When the Mac is an endpoint, rsync
requires a detected binary at both ends. Same-host copies can use
cp -a when rsync is absent. Fallback copies have no transfer progress.
A copy-based file move requires an rsync route that can remove each source
file after its transfer. The move is refused when that route is unavailable;
the tar and cp -a fallbacks remain copy-only.
The move uses --checksum before source removal, so an existing
destination with the same size and timestamp must still match the source bytes.
Do not modify either the source or destination during an rsync move. Source files
leave progressively, so cancellation or failure may leave the selection split
between both locations. pālana removes empty selected source directories afterward
and reports every selected source entry that remains.
A same-filesystem move on one host uses mv. A whole-dataset move
between ZFS hosts uses zfs send and zfs receive.
ZFS#
ZFS is required only on remote hosts where you use ZFS features. Dataset trees, snapshots, mount state, and send/receive run on those hosts. The Mac orchestrates those commands through SSH and does not need ZFS installed.
zfs send and zfs receive require delegated
permissions from zfs allow on the datasets involved. Linux mount
and unmount operations also require the narrow sudo rule described in
The mount grant.