私もこれに出会っrsync
たことがあります。私のためにそれを修正したソリューションは、screen
セッション内からそれを実行することでした。これは、リモートサーバーへの接続を維持するのに役立ちました。
screen -LS rsync
[execute your rsync command]
Ctrl-A+D to detach from the session
実行することでステータスを確認できscreen -x rsync
ます(または、セッションに名前を付けた場合は、セッションに名前を付けることを決定したものは何でもかまいません)。これにより、現在のシェルがそのセッションに再接続されます。ステータスを確認した後、バックグラウンドで実行し続けるように、再度デタッチすることを忘れないでください。
screen
[誰かが私が間違っている場合は修正してください]を実行することにより、1回の失敗でバックグラウンドで実行するコマンドを実行することもできscreen -dm 'command'
ます。man screen
その最後のものを試す前に、あなたがしたいかもしれません。
編集:
あなたがscreen
このシナリオで何の支援も提供していないことを確認したので、私の回答を編集していますが、あなたは私のコメントに返信して、scp
どのような結果が得られるかを試してみるように提案しました。
私の新しい答えはこれですので: 使用scp
-またはssh
(でtar
) -の代わりに、rsync
確かに、scp
などの機能の膨大な数をサポートしていませんrsync
が、あなたが実際にそれがいることを、どれだけ多くの機能を発見するために驚かれると思いますし、ほとんどされているサポート、同一のものとしますrsync
。
の実際のシナリオscp
と他の代替案rsync
:
しばらく前から、運用サーバーからログをプルしてWebサーバーにローカルに保存し、開発者がトラブルシューティングの目的でログにアクセスできるようにするシェルスクリプトを作成する必要がありました。Unixチームのrsync
サーバーへのインストールに失敗した後、私はそれを使用scp
して同様に機能する回避策を考え出しました。
ことで、私は最近、それが使用するすべてであるように、スクリプトを変更し、言っssh
及びtar
- GNU tar
/ gtar
正確には、。GNUは、tar
あなたが実際に見つけることを多くのオプションをサポートしていますrsync
よう、--include
、--exclude
など、許可/属性の保存、圧縮、
私がこれを達成する方法はssh
、リモートサーバーに(pubkey authを介して)を使用して使用gtar -czf - [other options such as --include='*.log' and --exclude='*core*', etc.]
することですstdout
。これにより、すべての情報がに書き込まれ、[ローカル]にパイプtar -xzf
されて、リモートの運用サーバーで変更が行われなくなります。 、およびすべてのファイルがそのままローカルサーバーにプルされます。これrsync
は、この場合の優れた代替手段です。重要なことtar
もscp
サポートもない唯一のことは、増分バックアップとそのrsync
機能のブロックレベルのエラーチェックのレベルです。
私が使用している場合を参照しています完全なコマンドssh
とtar
:;(ローカルは、Debianで、何が価値があるため、リモートのSolaris 10である)このようなものになるだろう
cd /var/www/remotelogs
ssh -C user@remotehost "cd /path/to/remote/app.directories; gtar -czf - --include='*.log' --exclude='*.pid' --exlude='*core*' *" | tar -xz
あなたのシナリオではそれは反対です- tar -cf -
ローカルで、そして経由でリモートサーバーにパイプしますssh user@remotehost "tar -xf -"
-このタイプの振る舞いを参照する別の答えがありますが、それほど詳細には入りません。
速度を上げるために、他にもいくつかのオプションがあります。実行時間を可能な限り短くするために、私はすべてを容赦なく計時しました。での圧縮の使用tar
は無意味だと思うかもしれませんが、実際に-C
フラグを使用して圧縮ssh
を有効にssh
するのと同様に、少しスピードアップします。後でこの投稿を更新して、使用するコマンドを正確に含めることができます(投稿したコマンドと非常によく似ています)が、今週休暇中なので、現時点ではVPNに接続する気にはなれません。
Solaris 10ではも使用しています-c blowfish
。これは、認証に最も速い暗号であり、少し高速化にも役立ちますが、Solaris 11はそれをサポートしていないか、この暗号スイートを無効にしています。
さらに、ssh
/ tar
オプションを使用screen
することを選択した場合、時間がかかるバックアップを実行している場合は、実際に使用する私のオリジナルのソリューションを実装することをお勧めします。そうでない場合は、キープアライブ/タイムアウトの設定がssh_config
適切に調整されていることを確認してください。そうしないと、この方法でもパイプが破損する可能性が高くなります。
あなたが一緒に行く場合でもscp
、私はいつも使用することをお勧めであることがわかりscreen
またはtmux
この種の操作を行う際に、念のため。多くの場合、私は自分のアドバイスに従わないでこれを実行できませんが、実際にこれらのツールのいずれかを使用して、アクティブなシェルセッションが何らかの理由で切断されたためにリモートジョブが失敗しないようにすることをお勧めします。
rsync
問題の根本的な原因を解明したいと思っています。ただし、これが本当に重要な場合は、当面の実験が可能な2つの優れた回避策です。
kerberos
、リモートサーバーでの認証に使用するものを追加する必要があります。