Skip to content
Weik.ioDocs
2026.2
Try Weik.io

Operations and filters

Weik.io 2026.2

The operation is an rclone command such as copy, move or sync, filters choose the files with patterns, and retries say how often rclone tries within one run. Product page · Video

Watch: Shape what moves, 3:41

The video filters what moves and chooses between copy, move and sync.

On this page

Three fields shape what a run does: operation says what happens to the files, filters says which files, and retries with retriesSleep say how hard rclone tries before the run counts as failed. Anything else rclone accepts goes into flags.

Operations#

operation is an rclone command. These three cover most transfers:

Operation What happens
copy Copies new and changed files to the destination and leaves the source as it was.
move Moves the files: once a file is at the destination, rclone deletes it from the source.
sync Makes the destination the same as the source, which deletes files from the destination that the source doesn’t have.

Most other rclone commands are accepted too. A team runs check after a nightly sync to compare the two ends, or bisync to keep two shares in step both ways. The apply checks the name against the commands of the rclone the agent carries, rclone 1.75.1 in Weik.io 2026.2, and refuses a name that isn’t a command, or a command such as mount or serve that never ends by itself, with the field named.

Choose move when the source is a supplier’s outbox that should be empty after the run, copy when the source must keep its files, and sync when the destination must mirror the source exactly.

Filters#

filters is a list of patterns, and only the files that match move:

spec:
  operation: move
  filters: ["*.pdf", "*.xml"]

Each plain pattern becomes an rclone include rule, and one exclude rule for everything else follows them. The transfer above runs rclone with:

--filter "+ *.pdf" --filter "+ *.xml" --filter "- **"

An entry that starts with + or - is already an rclone filter rule and passes through as written, so rclone’s whole filter language is there when you need it:

filters: ["- archive/**", "+ invoices/*.pdf"]

Flags#

Anything else rclone accepts goes into flags, as written. The flags come before the filter rules on rclone’s command line:

spec:
  operation: copy
  flags: ["--max-age", "24h", "--transfers", "8"]
  filters: ["*.csv"]

Retries#

retries is how many times rclone tries the work within one run, from 0 to 10, and retriesSleep is how long it waits between tries. Without them rclone tries three times with no wait between.

spec:
  retries: 5
  retriesSleep: 30s

A run that still ends with errors is a failed run. It counts as a failed message in weikio status, weikio metrics and the admin UI, and it raises a problem that points to the run and gives the weikio logs command that shows what rclone wrote. Runs and transferred files shows a failed run.

The whole transfer#

finance/transfers/supplier-invoices.yaml
apiVersion: weik.io/v1
kind: mft
metadata: { name: supplier-invoices, project: finance }
spec:
  schedule: "0 0 5 * * ?"
  source:      { remote: supplier-ftp,      path: /outgoing }
  destination: { remote: invoice-archive,   path: invoices/incoming }
  operation: move
  filters: ["*.pdf"]
  retries: 5
  retriesSleep: 30s

Applying a changed transfer builds its next version. Deploy that version to devtest and watch a run before you promote it to production.