# Setting up Rsync on Windows

At the time of writing this how-to, to use the [Symitar Explorer - Remote Syms](/poweron-pro/capabilities.md#remote-syms) feature we require the use of common Unix utility called [rsync](https://rsync.samba.org/) to manage the local directories for each Sym which we refer to as "semi-virtual" workspaces.

{% hint style="info" %}
**Looking for additional context into the design decision?**\
\
Providing rich language support for a third-party language like PowerOn requires something called the [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/). Unfortunately, VS Code doesn't currently support LSP over "virtual workspaces" ([Issue #1264](https://github.com/microsoft/language-server-protocol/issues/1264)) which is the ideal design choice to bridge the gap between your local workstation and the Symitar host - forcing us to find an alternative.\
\
That alternative, was simply us managing a copy of the select remote directories you'd like for each Sym on your local machine and keeping them up to date using, you guessed it, `rsync`.
{% endhint %}

## Getting started

Now, we're aware that most of the Symitar developers out there are on a Windows workstation and `rsync` isn't something that's natively available. Sure there's technically a way to get it running using Windows binaries but fortunately for us Microsoft gave us the ability to install a Linux distribution of our choosing through something called [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/).

{% hint style="success" %}
**Already have WSL working on your machine?**\
\
Feel free to skip down to [Verifying the Remote Sym dependencies](#verifying-the-remote-sym-dependencies) if you already have a Linux distribution created via WSL or if you're comfortable with handling the deps yourself.
{% endhint %}

### Installing WSL

We recommend you follow the latest installation guide, [Install WSL](https://learn.microsoft.com/en-us/windows/wsl/install), by Microsoft. The distribution you choose shouldn't matter as long as it comes with `rsync` already installed.

### Installing SSHPass

In order to not prompt you 1,000 times while we manage the synchronization between your Remote Sym and local directory, we use another popular utility called [sshpass](https://www.redhat.com/sysadmin/ssh-automation-sshpass). The following steps walk you thought how to set this up on Ubuntu.

#### Update & install via APT

Using [Advanced Packaging Tool (APT)](https://ubuntu.com/server/docs/package-management#advanced-packaging-tool), make sure your sytem has been updated with the lastet packages via the following commands:

* First make sure you're in your `wsl` instance:

<figure><img src="/files/fa3EspOCw5fQ5VRKHjRQ" alt=""><figcaption><p>Running the <code>wsl</code> command from a PowerShell prompt in Windows 11.</p></figcaption></figure>

* Next, from the `$` prompt, go ahead and update your `apt` packages:

<figure><img src="/files/wso5vIovCCBTuYmJNbzr" alt=""><figcaption><p>Running the <code>sudo apt update</code> command within a WSL Ubuntu instance.</p></figcaption></figure>

* After typing in your Ubutu user password, you should see something like the following:

<figure><img src="/files/cM2zb5jM1BLDUYo8VSxn" alt=""><figcaption><p>Output after running <code>sudo apt update</code> on WSL Ubuntu instance.</p></figcaption></figure>

* Finally run `sudo apt install sshpass` (if you've already installed, the output will look similar to the following)

<figure><img src="/files/5iz1eXKgRXkAo4p4EPEM" alt=""><figcaption><p>Running <code>sudo apt install sshpass</code> on WSL Ubuntu instance.</p></figcaption></figure>

## Verifying the Remote Sym dependencies

After installation or if you have an existing WSL distribution you're working with, here are the simple commands to check if you meet the dependencies.

### Is Rsync installed?

Run `which rsync` to confirm it exists in your `/bin` directory.

<figure><img src="/files/xnqRiUk5jN0OxEm15OrN" alt=""><figcaption><p>Running <code>which rsync</code> on a WSL Ubuntu instance.</p></figcaption></figure>

### Is SSHPass installed?

Run `which sshpass` to confirm it exists in your `/bin` directory.

<figure><img src="/files/mO5U8xrn81LhbHbbBdgW" alt=""><figcaption><p>Running <code>which sshpass</code> on a WSL Ubuntu instance.</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.libum.io/poweron-pro/how-tos/setting-up-rsync-on-windows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
