I use rsync to sync files between a local directory and a remote host. I also use plink to automate my SSH passphase entry.

What I can't figure out is how to use rsync with plink. This is what I think the syntax should be:

rsync -args --rsh="plink user@remote" local_dir/ :/remote_dir

But I get "Access Denied" messages. Is there a way to do this? Is it simple?

Edited to reflect what I think the syntax should look like. I had it very wrong before.

3 Answers 3


It seems to be an incompatibility in stdin/stdout redirection between cygwin and native Win32 programs.

Someone has managed to make a wrapper that solves the problem:


The usage would be something like:

rsync -args -e="cygnative plink" local_dir/ user@remote:/remote_dir

This is a complete Batch-file to solve the problem:

rem This is file: copy_win_inifiles_to_linux_via_rsync_with_pagent.bat

rem This is what I want:
rem Windows with Putty+Pagent -> rsync -> Linux
rem pagent.exe is already loaded with my ssh-key
rem This ssh-key shall make the authentication to the remote rsyncd/Linux
rem Environment for this Batch-file:
rem plink.exe for Windows, derived from cygwin
rem download here:
rem    http://it-em.net/joomla/downloads/rsync.zip
rem    with german dokumentation in http://it-em.net/joomla/index.php?option=com_content&view=article&id=49&Itemid=54cms/front_content.php
rem cygnative.exe is needed from plink.exe (putty-suite) 
rem so that plink.exe works together wird rsync.exe
rem download cygnative here:
rem     http://diario.beerensalat.info/2009/08/18/new_cygnative_version_1_2_for_rsync_plink.html
rem Filetree looks like this:
rem + copy_win_inifiles_to_linux_via_rsync_with_pagent.bat
rem + bin/
rem      + rsync.exe
rem      + cygwin1.dll         # needed from rsync.exe
rem      + cygiconv-2.dll      # needed from rsync.exe
rem      + cyggcc_s-1.dll      # needed from rsync.exe
rem      + cygnative.exe       # standalone-program
rem      + plink.exe           # from putty-suite, standalone-program
rem + ini/                     # Here are the file which shall be transferred
rem      + bla.ini
rem      + foo.ini
rem our current working is the same where this bat-file is

set SRC_DIR=./ini/
set DST_USER=yourusername
set DST_SERVER=your-linux-server.somewhere.com
set DST_PORT=22
set DST_DIR=/home/yourusername/what/ever/ini

bin\rsync.exe -v -d --delete -e="./bin/cygnative.exe ./bin/plink.exe -P %DST_PORT%" %SRC_DIR% %DST_USER%@%DST_SERVER%:%DST_DIR%
  • The link to cygnative.exe is dead. Here are a couple of alternatives that I managed to find: this gist and this zip. I have used the executable contained in the zip, but I cannot vouch for either source. The original author would appear to have taken down his blog, however his website is here.
    – starfry
    Apr 15, 2017 at 12:33

I typically do my rsyncs over ssh with something similar to the following:

rsync -args -e "ssh -i .ssh/my-key" user@hostname:/dir1 /dir2

You could try substituting the appropriate plink or putty command.

  • 1
    Thank you, but it's not working for me. Please see my edits because I originally messed up the syntax of the rsync command.
    – Corey
    May 2, 2011 at 14:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.