私はシェルの世界に初めてアクセスし、300を超えるサーバーからファイルをインポートする簡単なスクリプトを書いています。以下のように作成すると、一度に300個のサーバーにすべてログインしてファイルを抽出するか、1つずつ抽出するようになります。また、ユーザーにパスワードのないログインを提供することもできます。$ usernameでユーザーに言及するか、別のスクリプトを作成する必要があります。
#!/bin/bash
cd /backup
for server in $(cat server.txt)
do
scp -r $username@$server:/tmp/backup/*.txt* .
done
答え1
このように書いたら、一つずつ見てください。
parallel
並行して実行するには、見てください(パッケージをインストールする必要があるかもしれません)。また、一度に300のジョブをすべて実行せずに、同時実行数を制限してください。それ以外の場合は、全体の操作が遅くなります。
パスワードなしでログインできます。 SSHキーペアを作成し、それを実行するマシンに秘密キーを入力し、複製するすべての300マシンに公開scp
キーを入力する必要があります。~/.ssh/authorized_keys
キーが正しい位置にある場合、スクリプトを変更する必要はありません。
答え2
dirktが言ったように、これは各コマンドを順番に実行します。つまり、最初のコマンドが完了するまで、次のコピーは開始されません。
スクリプトを合理的な時間内に実行するには、次&
のように行またはコードブロック(中括弧内)の末尾に文字を追加してバックグラウンドでコマンドを実行し、すぐに次のコマンドを開始できます。
#!/bin/bash
for server in $(cat server.txt); do
scp -r $username@$server:/tmp/backup/*.txt* /backup/ &
done