# rsynctask.create

Create a Rsync Task.

Type: object

##

Type: array
No Additional Items

#### Tuple Validation

##### Parameter 1: rsync_task_create

#### rsync_task_create

Type: object

Configuration for creating a new rsync task.

No Additional Properties

##

#### Path

Type: string

Local filesystem path to synchronize.

Must be at most `1023` characters long

##

#### User

Type: string

Username to run the rsync task as.

##

#### Mode

Type: enum (of string) Default: "MODULE"

Operating mechanism for Rsync, i.e. Rsync Module mode or Rsync SSH mode.

##### Must be one of:

- "MODULE"
- "SSH"

##

#### Remotehost

Default: null

IP address or hostname of the remote system. If username differs on the remote host, "username@remote_host" format should be used.

## Any of

Type: string
Type: null

##

#### Remoteport

Default: null

Port number for SSH connection. Only applies when `mode` is SSH.

## Any of

Type: integer
Type: null

##

#### Remotemodule

Default: null

Name of remote module, this attribute should be specified when `mode` is set to MODULE.

## Any of

Type: string
Type: null

##

#### Ssh Credentials

Default: null

Keychain credential ID for SSH authentication. `null` to use user's SSH keys.

## Any of

Type: integer
Type: null

##

#### Remotepath

Type: string Default: ""

Path on the remote system to synchronize with.

##

#### Direction

Type: enum (of string) Default: "PUSH"

Specify if data should be PULLED or PUSHED from the remote system.

##### Must be one of:

- "PULL"
- "PUSH"

##

#### Desc

Type: string Default: ""

Description of the rsync task.

##

#### RsyncTaskSchedule

Type: object

Cron schedule for when the rsync task should run.

No Additional Properties

##

#### Minute

Type: string Default: "00"

Minute when the rsync task should run (cron format).

##

#### Hour

Type: string Default: "*"

"00" - "23"

##

#### Dom

Type: string Default: "*"

"1" - "31"

##

#### Month

Type: string Default: "*"

"1" (January) - "12" (December)

##

#### Dow

Type: string Default: "*"

"1" (Monday) - "7" (Sunday)

##

#### Recursive

Type: boolean Default: true

Recursively transfer subdirectories.

##

#### Times

Type: boolean Default: true

Preserve modification times of files.

##

#### Compress

Type: boolean Default: true

Reduce the size of the data to be transmitted.

##

#### Archive

Type: boolean Default: false

Make rsync run recursively, preserving symlinks, permissions, modification times, group, and special files.

##

#### Delete

Type: boolean Default: false

Delete files in the destination directory that do not exist in the source directory.

##

#### Quiet

Type: boolean Default: false

Suppress informational messages from rsync.

##

#### Preserveperm

Type: boolean Default: false

Preserve original file permissions.

##

#### Preserveattr

Type: boolean Default: false

Preserve extended attributes of files.

##

#### Delayupdates

Type: boolean Default: true

Delay updating destination files until all transfers are complete.

##

#### Extra

Type: array of string

Array of additional rsync command-line options.

No Additional Items

##### Each item of this array must be:

Type: string

##

#### Enabled

Type: boolean Default: true

Whether this rsync task is enabled.

##

#### Validate Rpath

Type: boolean Default: true

Validate the existence of the remote path.

##

#### Ssh Keyscan

Type: boolean Default: false

Automatically add remote host key to user's known_hosts file.

##

#### RsyncTaskEntry

Type: object

The newly created rsync task configuration.

No Additional Properties

##

#### Id

Type: integer

Unique identifier for the rsync task.

##

#### Path

Type: string

Local filesystem path to synchronize.

Must be at most `1023` characters long

##

#### Dataset

The ZFS dataset containing the rsync task path (e.g., 'tank/data'). Returns `null` if the path cannot be resolved yet (encrypted dataset not unlocked, etc.). This is a read-only field automatically populated from "path".

## Any of

Type: string
Type: null

##

#### Relative Path

The path of the rsync task relative to the dataset mountpoint (e.g., 'backups/daily'). An empty string indicates the task path is at the dataset root. Returns `null` if the path cannot be resolved yet. This is a read-only field automatically populated from "path".

## Any of

Type: string
Type: null

##

#### User

Type: string

Username to run the rsync task as.

##

#### Mode

Type: enum (of string) Default: "MODULE"

Operating mechanism for Rsync, i.e. Rsync Module mode or Rsync SSH mode.

##### Must be one of:

- "MODULE"
- "SSH"

##

#### Remotehost

Default: null

IP address or hostname of the remote system. If username differs on the remote host, "username@remote_host" format should be used.

## Any of

Type: string
Type: null

##

#### Remoteport

Default: null

Port number for SSH connection. Only applies when `mode` is SSH.

## Any of

Type: integer
Type: null

##

#### Remotemodule

Default: null

Name of remote module, this attribute should be specified when `mode` is set to MODULE.

## Any of

Type: string
Type: null

##

Default: null

In SSH mode, if `ssh_credentials` (a keychain credential of `SSH_CREDENTIALS` type) is specified then it is used to connect to the remote host. If it is not specified, then keys in `user`'s .ssh directory are used.

## Any of

#### KeychainCredentialEntry

Type: object
No Additional Properties

##

#### Id

Type: integer

Unique identifier for this keychain credential.

##

#### Name

Type: string

Distinguishes this Keychain Credential from others.

Must be at least `1` characters long

##

#### Type

Type: enum (of string)

Type of credential stored in the keychain.

- `SSH_KEY_PAIR`: SSH public/private key pair
- `SSH_CREDENTIALS`: SSH connection credentials including host and authentication

##### Must be one of:

- "SSH_KEY_PAIR"
- "SSH_CREDENTIALS"

##

#### Attributes

Credential-specific configuration and authentication data.

## Any of

#### SSHKeyPair

Type: object

At least one of the two keys must be provided on creation.

No Additional Properties

##

#### Private Key

Default: null

SSH private key in OpenSSH format. `null` if only public key is provided.

## Any of

Type: string
Type: null

##

#### Public Key

Default: null

Can be omitted and automatically derived from the private key.

## Any of

Type: string
Type: null

#### SSHCredentials

Type: object
No Additional Properties

##

#### Host

Type: string

SSH server hostname or IP address.

##

#### Port

Type: integer Default: 22

SSH server port number.

##

#### Username

Type: string Default: "root"

SSH username for authentication.

##

#### Private Key

Type: integer

Keychain Credential ID.

##

#### Remote Host Key

Type: string

Can be discovered with keychaincredential.remotesshhostkeyscan.

##

#### Connect Timeout

Type: integer Default: 10

Connection timeout in seconds for SSH connections.

Type: null

##

#### Remotepath

Type: string Default: ""

Path on the remote system to synchronize with.

##

#### Direction

Type: enum (of string) Default: "PUSH"

Specify if data should be PULLED or PUSHED from the remote system.

##### Must be one of:

- "PULL"
- "PUSH"

##

#### Desc

Type: string Default: ""

Description of the rsync task.

##

#### RsyncTaskSchedule

Type: object

Cron schedule for when the rsync task should run.

No Additional Properties

##

#### Minute

Type: string Default: "00"

Minute when the rsync task should run (cron format).

##

#### Hour

Type: string Default: "*"

"00" - "23"

##

#### Dom

Type: string Default: "*"

"1" - "31"

##

#### Month

Type: string Default: "*"

"1" (January) - "12" (December)

##

#### Dow

Type: string Default: "*"

"1" (Monday) - "7" (Sunday)

##

#### Recursive

Type: boolean Default: true

Recursively transfer subdirectories.

##

#### Times

Type: boolean Default: true

Preserve modification times of files.

##

#### Compress

Type: boolean Default: true

Reduce the size of the data to be transmitted.

##

#### Archive

Type: boolean Default: false

Make rsync run recursively, preserving symlinks, permissions, modification times, group, and special files.

##

#### Delete

Type: boolean Default: false

Delete files in the destination directory that do not exist in the source directory.

##

#### Quiet

Type: boolean Default: false

Suppress informational messages from rsync.

##

#### Preserveperm

Type: boolean Default: false

Preserve original file permissions.

##

#### Preserveattr

Type: boolean Default: false

Preserve extended attributes of files.

##

#### Delayupdates

Type: boolean Default: true

Delay updating destination files until all transfers are complete.

##

#### Extra

Type: array of string

Array of additional rsync command-line options.

No Additional Items

##### Each item of this array must be:

Type: string

##

#### Enabled

Type: boolean Default: true

Whether this rsync task is enabled.

##

#### Locked

Type: boolean

Whether this rsync task is currently locked (running).

##

#### Job

Information about the currently running job. `null` if no job is running.

## Any of

Type: object
Type: null

Required roles: SNAPSHOT_TASK_WRITE