Guide and reference

Moving files

File operations use the selected entries, or the cursor entry when the selection is empty. File-verb plans wait for Enter. Saved remote edits upload automatically by default; see Remote editing.

File verbs#

y copies to the other pane, m moves, and d deletes. r opens a rename field, a opens a create field, and a trailing slash creates a directory. t updates modification times.

Delete permanently removes the selected files and directories, including their contents. It does not use Trash.

A rename checks that the destination name is absent before mv runs, then verifies that the new path exists and the old path is absent. A create checks for an existing name before touch or mkdir runs.

Copy and move routes#

A move within one proven filesystem can use mv when the destination does not require a directory merge. A file move across filesystems, datasets, or hosts requires an rsync route that removes each transferred source file. A directory merge uses that route because mv cannot merge directory contents.

Between two SSH hosts, direct file transfers require rsync 3.1 or later on the source, rsync on the destination, and a working onward SSH connection through the forwarded agent. Otherwise file copies stream through the Mac using tar, and copy-based file moves refuse. See Transfer requirements for endpoint and same-host fallbacks.

An eligible whole ZFS dataset uses zfs send and zfs receive. The plan names the tool, the process host, and whether bytes pass through the Mac.

Source removal and verification#

A copy-based file move runs rsync with --checksum --remove-source-files. The checksum comparison prevents an existing destination with the same size and timestamp from standing in for different source bytes. rsync removes each source file after transferring that file, so the source empties progressively.

Do not modify either the source or destination during the move. rsync does not make concurrent changes safe, and cancellation or failure may leave files split between both locations. The plan shows this warning before Enter.

After rsync exits successfully, pālana runs rmdir from the deepest selected source directories upward. rmdir removes empty directories and leaves directories that still contain files.

A final command checks every selected source path. Any source entry still present fails the move and prints its path in a retained-source message. A transfer error or cancellation stops the later cleanup commands, so inspect both locations before retrying a partial move.

Destination entries#

Planning reads the destination and reports file replacement, directory merge, and file-versus-directory conflicts. A kind conflict refuses the plan. An unreadable destination is reported because collision status is then unknown.

Drag and drop#

A drop between panes composes a copy plan, and holding Option composes a move plan. A drop on a directory row uses that directory as the destination. Finder drops are resolved through a current local directory listing, and a same-location drop is refused.

Dragging out of a local pane supplies a local file URL to the receiving Mac application. Remote entries cannot supply a local file URL.

Remote editing#

Opening a remote file copies it into a unique local directory and records the remote path, metadata, and SHA-256 digest. A file watcher detects in-place and atomic-replacement saves. The default setting sends a clean saved edit back automatically; enabling ask before sending saved edits back requires Enter.

Before upload, pālana reads the current remote metadata and bytes. A missing or changed remote file requires confirmation, and an unreadable remote version prevents plan composition. Confirmation binds the upload to the version just read, so another remote change before commit refuses the replacement.

The upload first writes a palana-send-* staging entry. Commit checks the bound destination version, moves an existing version into a palana-replaced-* recovery path, then promotes the staged file. Failures report the surviving staging or recovery path.

Cancellation#

Control-C cancels planning or enactment. During enactment, pālana terminates the active process group or both halves of a proxy pipeline and waits for process exit. Plain ` hides a running panel while the command continues.