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:
localPath: /src/→ copies the contents of/srcintoremotePath.localPath: /src→ copies the directory itself, producingremotePath/src/.
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.
bytesSentdeletionsdryRunexitCodefilesTransferredspeedup