여러 원격 컴퓨터의 파일을 로컬로 복사하고 원격 컴퓨터용 디렉터리 생성

여러 원격 컴퓨터의 파일을 로컬로 복사하고 원격 컴퓨터용 디렉터리 생성

여러 대의 가상 머신을 연구하고 가상 머신에서 내 로컬 머신으로 일부 파일을 복사하기 위한 다음 스크립트를 생각해냈습니다.

SG=rohos; date; for i in `cat /etc/hosts | grep "$SG-" | awk '{print $2}'` ;do echo "Logging into ${i}";ssh -i /root/.ssh/vm_private_key keyless-user@${i} "sudo mkdir -p /tmp/${SG}/${i}; sudo cp /var/some.log /tmp/${SG}/${i}/ ";done

mkdir 및 cp의 대상 디렉터리를 여러 번 입력하지 않도록 이 스크립트에서 무엇을 변경할 수 있습니까? 아니면 rsync 같은 더 나은 도구가 있으면 알려주시기 바랍니다.


SG=rohos
date 
for i in `cat /etc/hosts | grep "$SG-" | awk '{print $2}'` 
do 
  echo "Logging into ${i}"
  ssh -i /root/.ssh/vm_private_key keyless-user@${i} "sudo mkdir -p /tmp/${SG}/${i}; sudo cp /var/some.log /tmp/${SG}/${i}/ "
done

답변1

귀하의 스크립트는 귀하가 원하는 것을 할 수 없습니다. 작성된 대로 원격 호스트의 파일만 /tmp/$SG/$i동일한 원격 호스트로 복사됩니다.

사용하고 scp대체해야합니다. 예를 들어:sshcp

SG=rohos
date 
for i in $(awk "/$SG-/ {print \$2}" /etc/hosts); do 
  echo "Logging into $i"
  mkdir -p "/tmp/$SG/$i"
  scp -i /root/.ssh/vm_private_key "keyless-user@$i:/var/some.log" "/tmp/${SG}/${i}/"
done

복사된 파일의 타임스탬프와 권한을 유지하려면 명령 -pscp옵션을 추가하세요. 또는 -r전체 디렉터리 트리의 재귀적 복사본을 추가하세요.

man scpscp 및 해당 옵션에 대한 자세한 내용은 리소스를 참조하세요.

관련 정보