クライアント用のバックアップサーバーがあります同期SSH経由。サーバーは、rsync サーバー側呼び出しをラップするカスタムシェルスクリプトを実行するように構成されます。クライアントはこれを認識せず、有効なrsyncコマンドラインを実行できます。
クライアントのいくつかのパラメータをこのシェルスクリプトに渡したいと思います。それはまるで
$ rsync -av -customarg1 value1 -customarg2 value2 file1 file2 user@server
クライアントは(pass)rsync
のように、自分が知らないパラメータを拒否します。私が考えた最善の方法は、rsyncサーバーを起動するためにスクリプトを実行する前に、スクリプトがサーバー側のコマンドラインから抽出する偽のサーバー側のファイル仕様に引数を渡すことです。つまり、このようなコマンドssh
rsync -e
$ rsync -av file1 file2 user@server:some/path\;customarg1=value1\;customarg2=value2
2つのパラメータを指定し、コマンドのように動作します。
$ rsync -av file1 file2 user@server:some/path
(これは、SSHサーバーが実行するように構成された内容(カスタムシェルスクリプトなど)に関係なく、SSHを使用してsshクライアントによって実行されたコマンド(rsyncクライアントによって実行されたrsyncサーバーコマンドなど)を含む複数の環境変数を設定する$SSH_ORIGINAL_COMMAND
します。
ベストアンサー1
-M
おそらくオプション(長いバージョン)が利用可能ですが、--remote-option
クライアント側のrsyncはそのオプションをチェックしないようです。-M-xxxx
リモコンに転送され、-M
で削除されます-xxxx
。この機能は簡単に使用でき、-M-M-xxxx
クライアントとリモートでは無視されます。
rsync -av -M-M-myvar=val /tmp/test/ remote:test/
rsync を呼び出す前に、サーバーのフロントエンドが結果フラグを認識して削除すると、必要なものが得られます。
--rsync-path
さらに、これを使用してすべてのスクリプトを実行できます。リモートパラメータを接続します。例えば
rsync -a -M-myvar=val --rsync-path='echo hello >/tmp/out; ./mysync' /tmp/test/ remote:test/
リモートで次のことを実行します
echo hello >/tmp/out
./mysync --server -logDtpre.iLsfx -myvar=val . test/