rsync は IPV6 をサポートします

以前、Java で Linux コマンドを呼び出してファイルを同期する、ディザスター リカバリー マイクロサービスを実行したことがあります。元のビジネスでは IPV4 形式でのファイル同期をサポートしていましたが、その後、IPV6 環境に適応するために、関連する同期コマンドとすべての明示的なサポートを確認しましたが、独自のマイクロサービスでどのように呼び出しても、ファイルは同期されません。

原有命令:command =“rsync -rpoguPv —delete-e  \”ssh -i $key_path \”$src_dir $dst_dir “

調べてみると、IPV6 では前後に [ ] の記号を 2 つ追加する必要があることが分かりましたが、それでもマイクロサービスでは成功しません。結局、Baidu で何百もの投稿を閲覧した結果、linux コマンドは角かっこのエスケープ文字であることがわかりました。java コマンドを介して直接呼び出された場合、2 つの記号は Linux システムに渡された後にエスケープされます。一致しないことが判明した場合、同期が必要な IP アドレスに対応するサーバーを取得できません。
その方法は、次のように、Java コマンドが実行スクリプトを呼び出す前に、追加した角かっこに文字列を追加し、Linux エスケープを実行して、2 つの二重スラッシュを追加します。

dstPath.apend(“\\[”+IP地址+“\\]”);

このように、元のコマンドに -6 属性を追加すると、安心してコマンドを呼び出すことができます。

修改后命令:
command =“rsync -rpoguPv6 —delete-e  \”ssh -i $key_path \”$src_dir $dst_dir “

rsync コマンドについてはあまり紹介しません。Baidu にはたくさんあります。

おすすめ

転載: blog.csdn.net/PhilipJ0303/article/details/88957805