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

원하는 범위를 포함하도록 중괄호 안의 숫자를 변경할 수 있습니다.

관련 정보