2つのファイルを読み取り、rsync操作を実行するシェルスクリプト

2つのファイルを読み取り、rsync操作を実行するシェルスクリプト

2つのファイルから次の値を読み取り、rsync操作を実行して他のホストとJVMからファイルをコピーする方法はありますか?

注:2つの異なるホストがあり、JVMはクラスタで実行されるため、両方のホストで共通です。

現在、シェルスクリプトには次のコマンドがあります。ところで、Host_NameとJVM_Nameの値をファイル経由で渡したり、ファイルから読み込んでみたいと思います。

例えば

ホスト_1

rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_1/logs/JVM_Name_1/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_1/JVM_Name_1/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_1/logs/JVM_Name_2/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_1/JVM_Name_2/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_1/logs/JVM_Name_3/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_1/JVM_Name_3/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_1/logs/JVM_Name_4/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_1/JVM_Name_4/messages.log

ホスト_2

rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_2/logs/JVM_Name_1/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_2/JVM_Name_1/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_2/logs/JVM_Name_2/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_2/JVM_Name_2/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_2/logs/JVM_Name_3/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_2/JVM_Name_3/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_2/logs/JVM_Name_4/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_2/JVM_Name_4/messages.log

ベストアンサー1

目的のホストを含​​むホストファイルを作成しますhosts.txt。次に、次を実行します。

for i in $(cat hosts.txt); do for j in {1..4}; do rsync -hav -e ssh
--info=progress2
user@loggerserver:/xxx/xxxx/$i/logs/JVM_Name_$j/logs/messages.log
/cygdrive/d/xxx/xxxx/$i/JVM_Name_$j/messages.log; done; done

目的の範囲を含むように中括弧内の数字を変更できます。

おすすめ記事