Rsysnc を使用して、実行中のコンテナから他のサーバーにログを転送するにはどうすればよいですか?

Rsysnc を使用して、実行中のコンテナから他のサーバーにログを転送するにはどうすればよいですか?

すでにログをホストマシンに公開しようとしましたが(docker run -v src:/desを使用)、今度はログを別のサーバーに転送したいと思います。

使用したコマンド:

  • rsync -u -avze ssh ソース/* example.com:/des/logs

    rsync: 実行に失敗しました ssh: そのようなファイルまたはディレクトリはありません (2) rsync エラー: pipe.c(84) の IPC コード (コード 14) にエラーが発生しました [送信者 = 3.0.9] rsync: writefd_unbuffered がソケットに 4 バイトを書き込むことができませんでした [送信者]: パイプが壊れています (32) rsync エラー: io.c(1532) の IPC コード (コード 14) にエラーが発生しました [送信者 = 3.0.9]

ソースパスと宛先パスはすでに確認しましたが、それでも同じ結果になります。


  1. ホスト サーバー 1 がサーバー 2 と通信できる場合、サーバー 01 上で実行されている Docker コンテナーはサーバー 2 と通信できるはずです。(これは正しい記述ですか?)

  2. Splunkなどの他のツールを使用せずにログを管理できるLinuxユーティリティを使用する方法はありますか?

答え1

構文が間違っているため、エラー メッセージが表示されます:

“No such file or directory (2) rsync error”

正しい構文は次のとおりです。

$ rsync  <options>  /source host:/dest

例えば

$ rsync -avz /source host:/dest

SSH のカスタム ポートを指定する必要がある場合は、引用符を使用します。例を以下に示します。

$ rsync -e "ssh -p port"  <options> /source host:/dest

また、ソース ディレクトリの所有権を確認してください。rsync を実行しているユーザーである必要があります。そうでない場合は同期に失敗します。

関連情報