scp를 사용하여 복사할 때 와일드카드 문자(*)를 어떻게 사용합니까?

scp를 사용하여 복사할 때 와일드카드 문자(*)를 어떻게 사용합니까?

*경로에 문자를 사용할 때 scp를 사용하여 복사할 수 없는 이유는 무엇입니까?

scp SERVERNAME:/DIR/* .

*경로에서 SCP를 허용하려면 어떤 구성이 필요합니까 ?

업데이트: 문제는 서버 측이 아닙니다. pscp가 SCPv1을 사용하려고 하는데 이것이 오류 메시지의 원인입니다.

*라는 이름의 파일에 대한 scp 명령줄 및 오류 메시지

답변1

scp원격 시스템이 이를 glob으로 보지 않도록 하려면 리터럴 이스케이프를 전달해야 합니다 *(큰따옴표로 묶여 있음).

scp 'SERVERNAME:/DIR/\*' .

답변2

비록 Chris의 대답이 나를 올바른 길로 인도했지만 나는 Patrick의 조언이 정확하다고 생각했습니다. 따옴표를 사용하고 별표 앞에는 백슬래시가 필요하지 않습니다.

  • 따옴표 + 백슬래시 사용:

    $ scp 'SERVERNAME:/tmp/file_num\*' .
    
    scp: /tmp/file_num*.csv: No such file or directory
    
  • 따옴표만 포함:

    $ scp 'SERVERNAME:/tmp/file_num*' .
    
    judgments_for_job_171642.csv 100%   32KB  32.0KB/s   00:00    
    judgments_for_job_172394.csv 100%  548KB 182.6KB/s   00:03  
    

답변3

~을 위한와일드카드를 피하기 위해작은따옴표와 이스케이프된 별표를 모두 원합니다.

scp 'SERVERNAME:/DIR/\*' ./

사용하고 싶다면와일드카드작은따옴표를 사용하거나 별표를 이스케이프 처리하세요.

scp 'SERVERNAME:/DIR/*' ./
# or
scp SERVERNAME:/DIR/\* ./

scp와일드카드만 지원되는 것 같습니다.파일 이름하지만 그렇지 않다디렉토리 이름.

답변4

실제로 -r비슷한 상황에서만 사용됩니다. 특히 스크립트에서 변수를 사용할 때 그렇습니다.

예:

SERVERNAME="[email protected]"

scp -r $SERVERNAME:/DIR/ ./

관련 정보