Rsyncを使用して、ローカルディレクトリとリモートホスト間でファイルを同期します。また、plinkを使用してSSHパスフェーズエントリを自動化します。
私が理解できないのは、plinkでrsyncを使用する方法です。これは私が構文があるべきだと思うものです:
rsync -args --rsh="plink user@remote" local_dir/ :/remote_dir
しかし、「アクセスが拒否されました」というメッセージが表示されます。これを行う方法はありますか?簡単ですか?
編集済み構文がどのようになるべきかを反映します。以前はとても間違っていました。
これは、問題を解決するための完全なバッチファイルです。
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%
CygwinとネイティブWin32プログラム間のstdin/stdoutリダイレクトの非互換性のようです。
誰かが問題を解決するラッパーを作成することに成功しました:
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
私は通常、次のようなものを使用してsshを介してrsyncを実行します。
rsync -args -e "ssh -i .ssh/my-key" user @ hostname:/ dir1/dir2
適切なplinkまたはPuTTYコマンドに置き換えてみてください。