> For the complete documentation index, see [llms.txt](https://docs.libum.io/poweron-pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.libum.io/poweron-pro/how-tos/setting-up-rsync-on-windows.md).

# 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>
