These are the basic steps to set up and use an
rsync
tool for synchronization on Windows.
RSYNC Server |
Setup RSYNC Server on Windows
i. Manual Setup
- Install RSYNC on the server machines.
Install
Rsync
software like a linux through Chocolatey
|
|
- On the server, create a folder to share
|
|
e.g. C:\rsync_share
. as rsync share folder.
- On the server,Create the
C:\rsync\rsyncd.conf
file with the following contents:
|
|
This configures the share name as “rsync_share” pointing to the C:\rsync_share
folder.
Use cygdrive path prefix
as /cygdrive/c/rsync_share
- On the server, open PowerShell and run the rsync daemon:
|
|
This will run the rsync daemon using the config file C:\rsync\rsyncd.conf
.
You may need to configure firewall rules on the server to allow incoming
TCP
connections to port873
(The rsync daemon default port).
Rsync service is set to run automatically on startup on the server via “Task Scheduler”.
ii. Automatic via Script
Here are Windows scripts to automatically install
rsync
, configure it, and open the firewall port:
- Update Policy to allow execute self PowerShell script.
|
|
Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is “N”): y
- Create Windows PowerShell Script
Save all below content to a PowerShell script as names “rsync-config.ps1”
|
|
Parameter | Description | Path |
---|---|---|
rsync | Configuration folder for rsync | C:\rsync\ |
rsync_share | Shared folder for rsync | C:\rsync_share\ |
/cygdrive/c/rsync_share | Cygwin path prefix up to the shared folder location | C:\rsync_share\ |
auth users = rsync | Specifies that only the “rsync ” user can connect | |
secrets file = /cygdrive/c/rsync/rsync.passwd | Specifies the location of the password file that will be used for authenticating rsync connections. | C:\rsync\rsync.passwd |
The format of the rsync password file
(C:\rsync\rsync.passwd) is as follows:
|
|
username
: This is the username for the rsync account.password
: This is the password for the rsync account.
Each line in the file represents a single rsync
account. Create multiple accounts by adding additional lines to the file.
- Execute the PowerShell Script
run on Windows server to automatically setup rsync daemon, create share folder names “rsync_share” and configure the firewall. moreover, the rsync service startup on reboot.
RSYNC Client |
Setup RSYNC Client on Windows
Install RSYNC on the client machines.
Install Rsync
software like a linux through Chocolatey
|
|
Operating
i. Manual
On the client PC, create a folder to store rsync
data
|
|
Directory: C:\
Mode LastWriteTime Length Name
d—– 7/11/2023 12:46 PM rsync_client
For example:
To sync files from client to server (PUSH):
|
|
To sync files from server to client (PULL):
|
|
To sync files from server to client with --progress
flag on Linux
|
|
To sync files from client to server with --password-file
flag on Linux
|
|
Option | Description |
---|---|
-a | Enables archive mode |
-v | Enables verbose output |
-z | Enables compression |
--progress | Displays progress during the transfer |
--update | Skips files that are newer on the destination |
--chmod=ugo=rwX | Sets permissions of synced files |
--delete | Removes files on the destination that do not exist on the source |
rsync://server_ip_address/rsync_share | Specifies the remote directory as rsync_share |
./ClientFolder | Specifies the current directory on the local machine |
i. Automatic via Script
Update Policy to allow execute self PowerShell script.
|
|
- Create Windows PowerShell Script
Save all below content to a PowerShell script as names “rsync-client.ps1”
|
|
Variable | Description |
---|---|
$RsyncPullFolder | Specifies the download directory on the local machine |
$RsyncConfigFolder | Specifies the config file storage directory on the local machine |
$Source | Specifies the source directory on the local machine |
$Destination | Specifies the destination directory on the remote server |
$Username | Specifies the username of the rsync user on the remote server |
$Password | Specifies the password for the rsync user on the remote server |
$TaskName | Specifies the name of the scheduled task |
$TriggerTime | Specifies the time when the scheduled task will run |
This script runs on a Windows client and automatically sets up an rsync schedule, creates an rsync folder named ‘rsync_pull’, and configures the username and password for authorization.
Conclusion
rsync
can be a reliable and efficient solution for file synchronization on Windows, with its ability to preserve file attributes, compress data during transfer, and show verbose output.To use
rsync
on Windows, you can install a version of rsync compatible with Windows, configure your system’s firewall and network settings, and create a configuration file to specify the files and directories to be synced.