Many times, when I work on various projects, I need to synchronize files
between my windows box and linux server.
WinSCP has the nice synchronize feature, but it's very slow and
inaccurate in some cases.
My first thought was to install cygwin and use rsync, but it gets easier
than than. All you need is DeltaCopy program on windows side and SSH
server on linux side (you probably already have that).
Here are the steps I used to get it working:
First, we'll create the public & private key pair for password-less
login. You can skip this part if you already have keys you would like to
On windows, you can use PuttyGen for that.
Generate the key, click on Conversions / Export OpenSSH key and save the
key somewhere on disk.
Copy public key and paste it into .ssh/authorized_keys file for a
remote user which will be used for synchronization.
Download DeltaCopy and extract it somewhere.
Click 'Create new profile' and enter remote server data. Remove 'Assign
to scheduler' checkbox if you don't wan't periodic auto synchronization.
Click 'Add profile'.
Under 'File list' tab, add folders/files you would like to synchronize.
Right-click folder and select 'Modify target path' to change target. If
you want to synchronize single directory, set empty target path.
Under 'Options' tab select 'Connect via SSH'. Enter something like this
into 'Additional parameters' field:
-e 'ssh -p SSH_PORT -l REMOTE_USER -i PRIVATE_KEY_FILENAME' --chmod=u=rwx,g=rwx,o=rx --exclude=".svn/" --exclude="logs/" --exclude="cache/"
Change SSH_PORT, PRIVATE_KEY_FILENAME and REMOTE_USER with your
values. Copy private key to DeltaCopy directory or set full path here.
Chmod switch is needed, because otherwise, all new files will be created
using mask 000. You can specify folders/files to exclude with --exclude
That's it! When you want to synchronize folders, right-click profile and
select 'Run Now'.