Synchronisation Channel

Table of contents

Introduction

A sync channel is a set of instructions to unidirectionally synchronise some files between a hub and one of its connected storage using rsync. It consists of:

Multiple channels can be defined per storage. They are processed sequentially (not at the same time) one after the other by a sync agent. A sync agent is an independent process, dedicated to a storage, ran in parallel, one for each storage. This way, we achieve a multi-directional, asynchronous synchronisation experience, hot-plugging storages, and fault-tolerant (meaning that a storage going offline doesn't interfere with the others storages).

Creation and Access

The easiest way to create a new channel is to open the channels explorer under the storage from/to which you would like to upload/download files, and click on the Add button. A menu then proposes 2 buttons: Upload and Download to create a new channel to transfer files from the storage to the hub or from the hub to the storage, respectively.

Note

Another way to create new channels for advanced users and programmers is to use the API.

To access an existing channel, simply click on its name in the channels explorer.

Overview

A Channel page is divided into four tabs:

channel main panel screenshot

Channel main tab

The main tab of a channel's graphical user interface is divided into 3 sections:

Title bar

This contains the name of the channel as well as information regarding the production it belongs to.

For further information regarding the name, please see below.

Rsync Options

You can control many aspects of the file transfer using rsync options and filter rules. The options specified on a channel affect only this channel. In the following example below the --delete option is defined to clean the destination from unwanted files.

# The option: rsync --delete is set (see the
# eraser icon) to have an identical copy at
# destination (local file deletion and
# renaming at source are passed on
# destination)

Please see the rsync options page for more details about the available options.

Rsync Rules

Rules are written using the rsync syntax to include or skip files and folders:

# The producer sends the software for the
# pipeline in continuous integration (CI):

+ /tools/***

Please see the rsync filters page for more details about the syntax and how rule filters work in SyncPlanet.

Channel Parameters

link parameters screenshot

The parameters tab of a channel's graphical user interface is divided into 5 sections:

Name

A longer name, often the real long name with no size limit.

Tip

Example: tools

Identifier

An automatically generated string to identify the link of the form: lnk_# where # is a Universally Unique Lexicographically Sortable Identifier .

Tip

Example lnk_01G0J7XSPSE6C93H1B9RRFE9S7

Write Permissions Table

SyncPlanet is meant to be used by multiple users. This list contains all the users authorised to write and update an object. Developers can access the permissions table under the author key which can have a single user string value or have multiple user names in an array of username strings.

Note

If a user is not listed in the table, it means that you must first connect them to the project

Status

The status shows informations on links to know when the last run happened as well as its duration. It also shows any possible errors encountered in the process.

Map

This shows the real world location of the storage the channel is linked to.

Notes

This tab is used for personal notes regarding the channel.

JSON

This is the programming interface for the channel.

{
"_id": "lnk_01G0J7XSPSE6C93H1B9RRFE9S7",
"author": "support",
"enable": true,
"include": "# The producer sends the software for the\n# pipeline in continuous integration (CI):\n\n+ /tools/\n+ /tools/**\n\n# The option: rsync --delete is set (see the\n# eraser icon) to have an identical copy at\n# destination (local file deletion and\n# renaming at source are passed on\n# destination)",
"name": "tools",
"rsync_args": "--delete",
"src_id": "vol_01FWEWD03P3J2H98TQ0Y4AXF3H",
"tgt_id": "hub_01FX33ZYB78E9F5FTZMKC96A4P",
"time": 1649879738073,
"timeBegin": "2023-12-15 11:16:09+00:00",
"timeEnd": "2023-12-15 11:18:24+00:00",
"timeRead": "2023-12-15 11:16:09+00:00"
}

Note

To create a link, specify "lnk_{#}" as _id key to generate a unique and sortable ulid identifier statring with lnk_

Some additional keys are added and updated by the synchronisation process:

{
"time": 1649879738073,
"timeBegin": "2023-12-15 11:16:09+00:00",
"timeEnd": "2023-12-15 11:18:24+00:00",
"timeRead": "2023-12-15 11:16:09+00:00"
}

For more information about the API please see Environment-Setup and API

Next

Further reading: