InTouch Hub · Blue Isle Software

Rsync

Mirror directory trees to or from a remote host over SSH — delta transfer, resume, true mirror, real dry run.

Provided free and as is, without warranty of any kind — including merchantability, fitness for a particular purpose, and the accuracy or completeness of any result. See the licence. You are responsible for checking what this produces before relying on it.

file-storagereport

Rsync

Mirror directory trees to or from a remote host over SSH.

Use it when a job has to move a tree rather than a file: deploying a site, publishing a catalog, pulling a data drop. The FTP/SFTP tool transfers files; rsync synchronises trees — it sends only what changed, resumes what it dropped, and can make the destination match the source exactly.

What it does that a file transfer cannot

Delta transfer Sends only the changed blocks of changed files. Re-uploading a 450MB archive that was rebuilt but barely changed costs seconds, not the whole file.
Resume --partial keeps what arrived. An interrupted transfer picks up where it stopped instead of starting over — or worse, leaving a truncated file behind.
True mirror delete removes destination files that no longer exist at the source, so the remote matches the source instead of accumulating everything ever published.
Real dry run dryRun reports exactly what would transfer and what would be deleted, moving nothing.

Properties

Property Default Notes
direction upload upload = local → remote. download = remote → local.
localPath Required. Trailing slash matters (see below).
remotePath Required. Path on the credential's host.
delete false Mirror — remove destination files absent from the source.
maxDeletions 50 Refuse the transfer if delete would remove more than this. 0 = no limit.
dryRun false Preview only. Nothing moves.
excludes Comma-separated patterns, e.g. .git,*.pyc,__pycache__/
timeoutSeconds 3600 0 = unlimited.

Publishes: exitCode, filesTransferred, bytesSent, speedup, deletions, dryRun.

The trailing slash

This is rsync's oldest trap and it is not ours to fix:

Set it deliberately.

maxDeletions

delete is the one setting here that can destroy the destination. A source path that is empty, unmounted, or simply mistyped is indistinguishable from "the user deleted everything" — and rsync will faithfully mirror that.

So before any mirror, the tool counts what would be removed and refuses if the count exceeds maxDeletions. Raise the limit when a large removal is genuinely intended; set 0 to disable the guard entirely.

Credentials

Standard SSH credential: server, port, login, and either a password or a private key (publicKeyAuth + privateKeyPath).

The password is never written into the job, the log, or the process table. It reaches ssh through a private, short-lived askpass helper that exists only for the length of the transfer. Nothing to shim, nothing to leak.

Requirements

rsync and ssh must be on the InTouch host's PATH — both are standard on Linux. The tool drives the real rsync binary, because rsync's delta algorithm is the entire reason to use it.

Publishes

The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.