scpファイルを複数のサーバーに同時に転送する

scpファイルを複数のサーバーに同時に転送する

server.txtというファイルがあります。

次のサーバーがあると仮定すると、より多くのサーバーがある可能性があります。 server1 server2 server3 server4

/tmp/ 場所にファイル (scp コマンドを使用するすべてのサーバーの file.txt) をコピーする方法。

答え1

仮定bash:

for server in $(cat server.txt)
do
  scp file.txt "$server":/tmp/
done

パラレルモード(server.txtが大きい場合はこのモードを使用しないでください。帯域幅が不足し、接続が中断された後に成功したものと失敗したことを理解するのが難しい場合があります):

for server in $(cat server.txt)
do
  scp file.txt "$server":/tmp/ &
done
wait

リクエストに応じてパスワードサポートが提供されます。

while read SERVER PASSWORD
do
  sshpass -p "$PASSWORD" scp file.txt "$SERVER":/tmp/
done <./server.txt

server.txt最初の行には、最初のサーバーのホスト名、スペース、最初のサーバーのパスワードなどを入力します。

関連情報