Scheduling File Transfers

Schedule automated file transfers

MFT uses standard cron expressions to run file transfers automatically in the background, without manual triggering.

Cron format

MFT uses a 6-field cron expression:

seconds minutes hours day-of-month month day-of-week

For example, 0 0 0 * * ? runs at 0 seconds, 0 minutes, 0 hours on any day — daily at midnight.

Common schedules

You can copy these expressions directly into your MFT definitions:

Every hour

schedule: 0 0 * * * ?

Runs exactly at the top of the hour (1:00, 2:00, 3:00, and so on).

Every 15 minutes

schedule: 0 */15 * * * ?

Runs at 0, 15, 30, and 45 minutes past the hour.

Daily at midnight

schedule: 0 0 0 * * ?

Weekdays at 9 AM

schedule: 0 0 9 * * MON-FRI

Runs Monday through Friday.

Every 2 hours

schedule: 0 0 */2 * * ?

Weekly on Monday

schedule: 0 0 9 * * MON

Daily at 2 AM

schedule: 0 0 2 * * ?

Commonly used for backups outside business hours.

Special characters

Use these symbols to build custom schedules:

* (Asterisk): Matches any value. In the month field, the job runs every month.

? (Question mark): Indicates no specific value. Use it in either the day-of-month or day-of-week field when the other field specifies a value.

- (Dash): Defines a range.

schedule: 0 0 9 * * MON-FRI  # Monday through Friday

, (Comma): Creates a list of specific values.

schedule: 0 0 9 * * MON,WED,FRI  # Only these three days

/ (Slash): Defines an increment.

schedule: 0 */15 * * * ?  # Every 15 minutes

Examples

The following examples show schedules inside complete MFT definitions.

Hourly log copy

Copying log files to storage every hour:

apiVersion: weik.io/v1alpha1
kind: MFT
metadata:
  name: hourly_logs
spec:
  source:
    name: app_server_smb
    path: logs/
  destination:
    name: weikio_blob
    path: logs/
  command: copy
  filters: "*.log"
  schedule: 0 0 * * * ?

Nightly database backup

Copying database dumps at 2 AM:

apiVersion: weik.io/v1alpha1
kind: MFT
metadata:
  name: nightly_backup
spec:
  source:
    name: backup_server_smb
    path: backups/database/
  destination:
    name: backup_s3
    path: database/
  command: copy
  filters: "*.sql.gz"
  schedule: 0 0 2 * * ?

Weekly report delivery

Moving generated reports to a partner’s SFTP server on Monday morning:

apiVersion: weik.io/v1alpha1
kind: MFT
metadata:
  name: weekly_reports
spec:
  source:
    name: company_smb
    path: reports/weekly/
  destination:
    name: partner_sftp
    path: incoming/
  command: move
  filters: "report_*.csv"
  schedule: 0 0 9 * * MON

Running jobs on the right agent

A scheduled job must run on an agent that can reach the source and destination systems. The requirements block tells Weik.io to select an agent with specific capabilities:

apiVersion: weik.io/v1alpha1
kind: MFT
metadata:
  name: onpremise_to_cloud
spec:
  source:
    name: company_smb
    path: data/
  destination:
    name: weikio_blob
    path: data/
  command: copy
  schedule: 0 0 0 * * ?
  requirements:
    Location: OnPremise
    Network: internal

An SMB transfer fails on a cloud agent that has no VPN access to the corporate network. By setting Location: OnPremise, the system waits for an on-premise agent to pick up the scheduled task.

Common requirement tags:

  • Location (e.g., OnPremise, Cloud, Edge)
  • Network (e.g., internal, external, vpn)
  • Environment (e.g., production, staging)

Next steps