![한 서버에서 두 개의 다른 서버로 파일을 복사하는 방법](https://linux55.com/image/78121/%ED%95%9C%20%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EB%8B%A4%EB%A5%B8%20%EC%84%9C%EB%B2%84%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B3%B5%EC%82%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
쉘 스크립트를 사용하여 서로 다른 두 서버의 파일을 복사해야 합니다. scp 사용자 이름, IP 주소 및 폴더의 대상 경로를 사용해 보았습니다.
답변1
상술 한 바와 같이여기작은 쉘 스크립트를 작성할 수 있습니다.
for dest in $(<destinations.txt); do
scp /path/to/the/file_to_copy.txt ${dest}:/remote/path/
done
destinations.txt
작성할 문서를 작성하면 됩니다.모든 라인에서목적지 user@host
는 아래와 같습니다:
[email protected]
[email protected]
대상 경로( /remote/path/
)는 스크립트에 하드 코딩되어 있으므로 경로가 두 서버 모두에 존재해야 함을 의미합니다. 각 대상에 대한 전용 경로를 설정하려면 스크립트를 편집하고 :/remote/path/
의 각 항목에 대해 이를 제거하고 설정할 수 있습니다 destinations.txt
.
그렇지 않으면 살펴볼 수 있습니다병렬 scp
답변2
RSA를 사용하면 암호를 묻는 메시지 없이 파일을 보내는 스크립트를 작성할 수 있으며 스크립트에 암호를 입력할 필요가 없습니다. 컴퓨터에서 실행:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
ssh-copy-id loginname@server1Ip
ssh-copy-id loginname@server2Ip
스크립트에서:
scp file loginname@server1IP
scp file loginname@server2IP
로그인 이름과 로컬 사용자 이름이 동일한 경우 loginname@ 부분을 생략할 수 있습니다.