ローカルコンピュータがダウンしている場合に別のサーバーからファイルをコピーする方法

ローカルコンピュータがダウンしている場合に別のサーバーからファイルをコピーする方法

各サーバーで実行され、特定のファイルをコピーするスクリプトがあります。スクリプトは、私が実行している場所とコピーする必要があるファイルを知っています。

スクリプトはローカルデータセンターからファイルをコピーしますlocal_dcが、操作が中断または応答しない場合はリモートデータセンターから同じファイルをコピーし、操作が中断された場合は示されているようにremote_dc_1別のリモートデータセンターから同じファイルをコピーします。remote_dc_2下に -

do_Copy() {
  el=$1
  PRIMSEC=$2
  scp david@"$local_dc":"$dir3"/new_weekly_2014_"$el"_200003_5.data "$PRIMSEC"/. || scp david@"$remote_dc_1":"$dir3"/new_weekly_2014_"$el"_200003_5.data "$PRIMSEC"/. || scp david@"$remote_dc_2":"$dir3"/new_weekly_2014_"$el"_200003_5.data "$PRIMSEC"/.
}
export -f do_Copy

# copying 5 files in parallel simultaneously in primary and secondary folder
parallel --retries 10 -j 5 do_Copy {} $PRIMARY ::: $primary_partition &
parallel --retries 10 -j 5 do_Copy {} $SECONDARY ::: $secondary_partition &
wait

echo "All files copied successfully."

今私の質問は次のとおりです。

  • local_dcマシンがダウンしたら、確実にremote_dc_1マシンからコピーされると思いますか?システムもダウンした場合remote_dc_1に複製されますかremote_dc_2
  • 今、3台のマシンがすべてダウンしたらどうなりますか?この場合、メッセージを印刷したいと思います。 3 台のシステムがすべて終了したので、シェルスクリプトを終了します。

機械の電源を切らないと、これを正しくテストできません。

ベストアンサー1

はい。最初のアイテムからコピーを試み、失敗した場合は2番目のアイテムを試し、失敗した場合は3番目のアイテムを試します。最後にメールを受信するには、次のコマンドを使用します。

scp ... || scp ... || scp || echo "All attempts failed" | mailx -r "[email protected]"

各scpコマンドが失敗したかどうかを知らせるには、サブシェルを使用できます。

scp ... || (echo "machine1 down" | mailx -r "[email protected]"&& scp ... ) ||
( echo "machine2 down" | mailx -r "[email protected]" && scp ... ) || 
     echo "All attempts failed" | mailx -r "[email protected]"

おすすめ記事