複数のサーバーでssh tarを操作する

複数のサーバーでssh tarを操作する

10台のサーバーのIPアドレスを含むファイルがあります。例えばhost.txt

1つのサーバーから10の異なるサーバーにあるディレクトリを圧縮したいと思います。

実行時間を短縮するためにこれらのサーバーと並列にSSHを実行する方法

以下のコードを試しましたが、運がありません。

cat host.txt |
 while read i
 do 
    ssh -qn $i 'tar -cvf /tmp/TC.tar.gz /etc' &
 done

期待する:

PSSHを使用せずにサーバーでtarコマンドが並列に実行されるように、10台のサーバーでSSHを並列化しようとしています。

答え1

クラスターの使用:https://sourceforge.net/projects/clusterssh/

コマンドを並列に実行するには、次のように使用できます。

cssh user@client1 user@client2

これにより、各クライアントの端末ウィンドウと、すべての端末で同時にコマンドを入力できるコマンドウィンドウが表示されます。

~/.clusterssh ディレクトリにはさまざまなオプションを設定できるため、クライアントをタグごとに簡単にグループ化できます。

バンドルクライアントからダウンロードするには、host.txtファイルは~/.clusterssh/tags次のようになります。

root@host1 tar update
root@host2 tar update
root@host3 tar test
root@host4 update test
root@host5 update test

このようにして、tar、update、およびtestタグを定義できます。このタグをtar使用すると、を実行して最初の3つのホストでClustershを実行できますcssh tar

インターネットを検索するclustersshと便利なドキュメントがたくさん見つかります。

apt-get install clustersshほとんどのLinuxディストリビューションにはClustershが含まれているため、次の方法で簡単にインストールできます。

編集する:

次のオプションを使用して、実行するコマンドをClustershに追加できます-a

cssh tar -a "tar -cvf /tmp/TC.tar.gz /etc"

また、SSH公開/秘密鍵を使用すると、常にパスワードを入力する必要はありません。

関連情報