Added
- Headless runs:
lazyrsync run PROFILEruns every task in a profile without
the TUI, andPROFILE/TASKruns a single task by the idlistprints. Suited
to cron and systemd timers — Snapshot tasks resolve their--link-destchain
fresh on every run, which no static crontab line can express. run -nfor a real dry run,--yesto allow tasks that delete at the
destination, and-vto include rsync's own output per task.- Documented exit codes:
0success,1refused for want of--yes,2
unknown target or unloadable config,3a task that could not start or was
killed, otherwise the first failing task's rsync exit code. - Dynamic paths:
{now},{now:FORMAT},{utcnow},{hostname},{user},
$VAR/${VAR}and~expand every time a task runs, so one saved task can
write to a new dated folder each night. Unknown placeholders and unset
variables are left as typed;{{and$$escape. - A separate opt-out per confirmation prompt in
settings.toml
(skip_delete_warning,skip_run_confirm,skip_remove_confirm), all
falseby default.
Changed
- A headless real run passes rsync
-qand reports one line per task; a dry run
is never quiet, and neither carries the TUI-only--info=progress2or
--statsflags. profiles.tomlrejects unknown keys instead of ignoring them, so a typo in a
field name fails loudly at load time rather than silently dropping a setting.
Fixed
- A task that enables
--delete-excludedon its own now warns, matching the
existing--deletewarning. - Placeholders resolve before a path is classified as remote, so a placeholder
that expands to contain a colon no longer looks like an SSH target.