를 사용하여 원격 컴퓨터에서 여러 파일을 복사하고 싶습니다 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' .