Skip to content

Add an rsync plugin for faster result uploads#4739

Merged
soulgalore merged 3 commits into
mainfrom
add-rsync-plugin
May 16, 2026
Merged

Add an rsync plugin for faster result uploads#4739
soulgalore merged 3 commits into
mainfrom
add-rsync-plugin

Conversation

@soulgalore
Copy link
Copy Markdown
Member

The existing scp plugin walks files one at a time over a single SFTP
channel, which is the worst case for a result directory of thousands
of small files — each one waits a full round-trip before the next
starts. Shelling out to rsync over ssh pipelines the wire protocol
and reuses the channel, so the same upload finishes in a small
fraction of the time on a typical Linux host.

This is exposed as a new plugin (--rsync.host / --rsync.username /
--rsync.privateKey / --rsync.destinationPath / etc.) sitting next
to scp, s3 and gcs, so users on the existing scp plugin keep their
exact behaviour and pick rsync only when they explicitly opt in.
Password authentication works through sshpass when present;
passphrase-protected keys need ssh-agent loaded ahead of time. The
plugin shells out to the system rsync and ssh binaries, which is
fine for the Linux runtime where sitespeed.io is mostly deployed.

Co-authored-by: Claude noreply@anthropic.com

  The existing scp plugin walks files one at a time over a single SFTP
  channel, which is the worst case for a result directory of thousands
  of small files — each one waits a full round-trip before the next
  starts. Shelling out to rsync over ssh pipelines the wire protocol
  and reuses the channel, so the same upload finishes in a small
  fraction of the time on a typical Linux host.

  This is exposed as a new plugin (--rsync.host / --rsync.username /
  --rsync.privateKey / --rsync.destinationPath / etc.) sitting next
  to scp, s3 and gcs, so users on the existing scp plugin keep their
  exact behaviour and pick rsync only when they explicitly opt in.
  Password authentication works through sshpass when present;
  passphrase-protected keys need ssh-agent loaded ahead of time. The
  plugin shells out to the system rsync and ssh binaries, which is
  fine for the Linux runtime where sitespeed.io is mostly deployed.

  Co-authored-by: Claude noreply@anthropic.com
@soulgalore soulgalore merged commit af51bbc into main May 16, 2026
15 checks passed
@soulgalore soulgalore deleted the add-rsync-plugin branch May 16, 2026 14:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant