여러 서버에서 ssh tar 작업

여러 서버에서 ssh tar 작업

10개 서버의 IP 주소가 포함된 파일이 있습니다. 예를 들어host.txt

1개의 서버에서 10개의 다른 서버에 있는 디렉터리를 압축하고 싶습니다.

실행 시간을 줄이기 위해 이러한 서버와 병렬로 SSH를 실행하는 방법

아래 코드를 시도했지만 운이 없습니다.

cat host.txt |
 while read i
 do 
    ssh -qn $i 'tar -cvf /tmp/TC.tar.gz /etc' &
 done

예상하다:

PSSH를 사용하지 않고 서버에서 tar 명령이 병렬로 실행되도록 10개의 서버에서 SSH를 병렬화하려고 합니다.

답변1

클러스터 사용:https://sourceforge.net/projects/clusterssh/

명령을 병렬로 실행하려면 다음과 같이 사용할 수 있습니다.

cssh user@client1 user@client2

이렇게 하면 각 클라이언트에 대한 터미널 창과 모든 터미널에서 동시에 명령을 입력할 수 있는 명령 창이 나타납니다.

~/.clusterssh 디렉터리에는 다양한 옵션을 설정할 수 있으므로 클라이언트를 태그별로 쉽게 그룹화할 수 있습니다.

번들 클라이언트에서 다운로드하려면 host.txt파일이 ~/.clusterssh/tags다음과 같을 수 있습니다.

root@host1 tar update
root@host2 tar update
root@host3 tar test
root@host4 update test
root@host5 update test

이 방법으로 tar, update 및 test 태그를 정의할 수 있습니다. 이 태그를 사용하면 tar를 실행하여 처음 3개 호스트에서 Clustersh를 실행할 수 있습니다 cssh tar.

인터넷을 검색 clusterssh하면 유용한 문서를 많이 찾을 수 있습니다.

apt-get install clusterssh대부분의 Linux 배포판에는 Clustersh가 포함되어 있으므로 다음을 통해 쉽게 설치할 수 있습니다 .

편집하다:

다음 옵션을 사용하여 실행할 명령을 Clustersh에 추가할 수 있습니다 -a.

cssh tar -a "tar -cvf /tmp/TC.tar.gz /etc"

그리고 SSH 공개/개인 키를 사용하면 항상 비밀번호를 입력할 필요가 없습니다.

관련 정보