Skip to content

Profiles & tasks

Your transfers live in profiles that hold tasks.

  • A profile is a named group — backups, website, whatever.
  • A task is one transfer: an ID, an action, a Source, a Destination, plus its flags, filters, and SSH settings. Either path can be a user@host:/path — see SSH & remote.

Both paths accept placeholders like {now:%Y-%m-%d}, {hostname} and $VAR, resolved on every run — see Dynamic paths.

Sync vs Snapshot

Toggle a task's Action with ←/→ as you add it:

  • Sync — a plain rsync copy.
  • Snapshot--link-dest versioning. Each run writes the next numbered directory (1/, 2/, …). Local-only.

Task IDs

Leave the ID blank and it's derived from the label, slugified, plus a short hash of the action, source and destination (photos-3f2a) — so two tasks with the same name but different endpoints still get distinct ids. Identical tasks fall back to a -2 suffix. Type your own if you'd rather; it just has to be unique.

The id is a task's address: lazyrsync list prints it, and lazyrsync run backups/photos-3f2a runs that one task. See Headless & scheduling.

Working with the list

  • j/k (or /) move the cursor. Nothing runs until you hit an action key, and [0] Status tracks the cursor so you see each task live.
  • An action (space/enter, or p/r/e/d) selects the task first: it climbs to the top, gets a *, then the action fires — so you never hit the wrong row.
  • V starts a vim-style visual range: extend with j/k, then one action key runs the whole block (batches confirm first).

Your profiles and tasks persist to profiles.toml — see Configuration. The list is ordered by recency, not by the order tasks appear in the file, which matters when you schedule a whole profile.

Released under the MIT License.