運用および保守中に、ファイルを複数のLinuxサーバーにバッチでコピーする必要がある場合があります。手動で1つずつコピーすると、効率が比較的低くなります。運用と保守の効率を向上させるために、スクリプトを使用して1つのLinuxホストから複数のサーバーにファイルをバッチでコピーできます。実装手順は次のとおりです。
1つは、Linuxホスト設定sshパスワードなしのログイン
まず、LinuxホストをSSHパスワードなしでログインできるように設定する必要があります。そのうちの1つを信頼できるホストとして使用して、パスワードなしで他のすべてのホストにログインできます。具体的な構成方法については、「信頼関係の構成」を参照してください。2つのLinuxホスト間(およびキャンセル方法) "。
2つ目は、ホストリストファイルhostsを作成する
vi hostsコマンドは、ホストリストファイルhostsを作成し、ファイル内のすべてのリモートホストを一覧表示します。
$ vi hosts
$ cat hosts
101.132.242.27
47.103.217.188
3つ目は、スクリプトファイルremotecopy.shを作成することです。
#!/bin/bash
while getopts f: OPT;
do
case $OPT in
f|+f)
files="$OPTARG $files"
;;
*)
echo "usage: `basename $0` [-f hostfile] <from> <to>"
exit 2
esac
done
shift `expr $OPTIND - 1`
if [ "" = "$files" ];
then
echo "usage: `basename $0` [-f hostfile] <from> <to>"
exit
fi
for file in $files
do
if [ ! -f "$file" ];
then
echo "no hostlist file:$file"
exit
fi
hosts="$hosts `cat $file`"
done
for host in $hosts;
do
echo "scp $1 $2@$host:$3"
scp $1 $2@$host:$3
done
第4に、スクリプトファイルremotecopy.shに実行権限を追加します
$ chmod u+x remotecopy.sh
5.信頼できるホストでスクリプトコマンドを実行します
スクリプト実行コマンドの形式は次のとおりです。
./remotecopy.sh -f hosts [yourfile] [username] [remotepath]
注:パラメーター1 [yourfile]は信頼できるホストにコピーされるファイル、パラメーター2 [username]はログインユーザー、パラメーター3 [remotepath]はリモートホストのファイルパスです。
例は次のとおりです。
$ ./remotecopy.sh -f hosts test.log testuser /home/testuser/
現在のパスにあるtest.logファイルを他のホストの/ home / testuser /ディレクトリにバッチでコピーして、シークレットログインユーザーtestuserを回避できます。
フォルダをバッチでコピーする必要がある場合は、remotecopy.shファイルのscpコマンドを変更するだけです。
記事のリファレンス:1台のLinuxマシンから複数のLinuxマシンにファイルをコピーする方法