SSH를 통해 rsync를 사용하여 원격에서 여러 파일 복사

SSH를 통해 rsync를 사용하여 원격에서 여러 파일 복사

를 사용하여 원격 컴퓨터에서 여러 파일을 복사하고 싶습니다 rsync. 그래서 다음 명령을 사용합니다.

rsync -Pav -e 'ssh -i sshkey' user@remotemachine:/home/user/file1.zip file2.zip file3.zip  .

다음과 같은 오류가 표시됩니다.

예기치 않은 로컬 인수: file2.zip arg가 원격 파일/디렉토리인 경우 앞에 콜론(:)을 붙입니다. rsync 오류: main.c(1362) [Receiver=3.1.0](코드 1)의 구문 또는 사용 오류

답변1

이것은 꽤 오래되었지만 허용되는 답변은 약간 너무 엄격합니다. 여러 파일이 반드시 rsync에 대한 단일 인수는 아닙니다. 에서 man rsync:

ADVANCED USAGE
       The  syntax  for  requesting  multiple  files  from a remote host is done by specifying additional remote-host args in the same style as the first, or with the hostname omitted.  For
       instance, all these work:

              rsync -av host:file1 :file2 host:file{3,4} /dest/
              rsync -av host::modname/file{1,2} host::modname/file3 /dest/
              rsync -av host::modname/file1 ::modname/file{3,4}

따라서 OP의 명령은 다음과 같습니다.

rsync -Pav -e 'ssh -i sshkey' user@remotemachine:/home/user/file1.zip :/home/user/file2.zip :/home/user/file3.zip  .

이는 이전 버전의 rsync에서는 불가능했지만 모든 주요 배포판에서는 몇 년 동안 이 작업을 수행해 왔습니다.

답변2

모든 원격 파일은 rsync에 대한 인수 중 하나여야 합니다. 따라서 모든 원격 파일을 작은따옴표로 묶으십시오.

rsync -Pav -e 'ssh -i sshkey' 'user@remotemachine:/home/user/file1.zip file2.zip file3.zip' .

그런데 별표를 사용하여 이 작업을 수행할 수도 있습니다(별표는 원격 셸에서 구문 분석됩니다).

rsync -Pav -e 'ssh -i sshkey' 'user@remotemachine:/home/user/*.zip' .

관련 정보