Unix SCPコマンドは応答コード> 0にもかかわらずファイルをコピーし続けますか?

Unix SCPコマンドは応答コード> 0にもかかわらずファイルをコピーし続けますか?

この場合、scpコマンドは応答コード> 0を返しましたが、ファイルが正常にコピーされ、最終的にデータベースにロードされたため、ファイルが破損していないことを意味します。

Unix SCPコマンドは応答コード> 0にもかかわらずファイルをコピーし続けますか? resp > 0の場合、ファイルが破損しているか、まったく転送されませんか? resp> 0は、レプリケーションが停止し、ファイルがコピーされなかったことを意味すると予想しました。

使用されたコード:

scp -r [!.]* [email protected]:/home/user/DATA_* /app/data
if (($? > 0)); then touch conn_error_172_0_0_1.bad; fi

このマニュアルによると、応答コード> 0はエラーです。http://support.microfocus.com/kb/doc.php?id=7021696

答え1

Unix SCPコマンドは応答コード> 0にもかかわらずファイルをコピーし続けますか?

この質問は意味がありません。scpこのコードは、実行中のすべての操作が完了した後にのみそのコードを返します。したがって、戻りコードを受け取ったら、scp操作は完了です。その後は何も起こりませんでした。何も進めるscpはありません!

scpエラー(およびエラーが発生した時点)によっては、すべてのファイル、すべてのファイル、または一部のファイルのみをコピーできます。

原子コピーが必要な場合は、代わりにrsyncオプションを--delay-updates使用してくださいscp

答え2

メイン文書scp

ユーティリティは成功するとscp0を終了し、エラーが発生すると> 0を終了します。

これは特に正確ではないため、実験を試す必要があります。

scp remoteHost:/etc/no_such_file /tmp; echo SS=$?    # "SS=1"
scp remoteHost:/etc/hosts /tmp; echo SS=$?           # "SS=0"
scp no_such_host:/etc/hosts /tmp; echo SS=$?         # "SS=255"

それでは、組み合わせを見てみましょう。

scp remoteHost:/etc/no_such_file remoteHost:/etc/hosts /tmp; echo SS=$?    # "SS=1"

終了状態が 0 でない場合でも、ファイルは正常/etc/hostsにコピーされました。一部のファイルはコピーされ、他のファイルはコピーされない場合のようです。

各ケースの終了状態は、使用するかどうか-Oscp新しいベースプロトコルではなく強制プロトコル)に関係なく同じです。sftp

私が下した結論は文書の結論です。終了状態が 0 でない場合は何らかのエラーが発生し、終了状態が 0 であればどの送信でもエラーは発生しません。

関連情報