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
원하는 범위를 포함하도록 중괄호 안의 숫자를 변경할 수 있습니다.