Есть ли способ использовать plink с rsync на Windows?

3745
Corey

Я использую rsync для синхронизации файлов между локальным каталогом и удаленным хостом. Я также использую plink для автоматизации моей записи SSH.

Я не могу понять, как использовать rsync с plink. Это то, что я думаю, синтаксис должен быть:

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

Но я получаю сообщения «Отказано в доступе». Есть ли способ сделать это? Это просто?

Отредактировано, чтобы отразить, как я думаю, синтаксис должен выглядеть. Я имел это очень неправильно раньше.

7

3 ответа на вопрос

2
Richard Lippmann

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 rem Windows with Putty+Pagent -> rsync -> Linux rem rem pagent.exe is already loaded with my ssh-key rem This ssh-key shall make the authentication to the remote rsyncd/Linux rem rem Environment for this Batch-file: rem 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 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 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% 
Ссылка на `cygnative.exe` не работает. Вот несколько альтернатив, которые мне удалось найти: [эта суть] (https://gist.github.com/silviuvulcan/7609c438f6ab5e51c8d19890e949565f) и [этот zip] (http://franklinstrube.com/wp-content/uploads) /2013/03/cygnative1.2.zip). Я использовал исполняемый файл, содержащийся в zip, но я не могу поручиться за любой источник. Первоначальный автор, похоже, снял свой блог, однако его сайт находится [здесь] (http://frank-behrens.de). starfry 7 лет назад 0
1
hectorct

Кажется, что это несовместимость в перенаправлении stdin / stdout между cygwin и нативными программами Win32.

Кто-то сумел сделать оболочку, которая решает проблему:

http://diario.beerensalat.info/2009/08/18/new_cygnative_version_1_2_for_rsync_plink.html

Использование будет что-то вроде:

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

Я обычно делаю rsyncs через ssh с чем-то похожим на следующее:

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

Вы можете попробовать заменить соответствующую команду plink или putty.

Спасибо, но это не работает для меня. Пожалуйста, смотрите мои изменения, потому что я изначально испортил синтаксис команды rsync. Corey 13 лет назад 1

Похожие вопросы