공백이있는 SSH 경로를 통한 Rsync가 따옴표로 작동하지 않음


17

경로에 공백이 없으면 SSH를 통해 RSYNC를 성공적으로 수행 할 수 있습니다.

경로에 공백이 있으면 작동하지 않습니다. 슬래시, 따옴표 및 큰 따옴표를 시도했습니다.

슬래시를 사용하면 출력에 성공했지만 전송 된 파일이 표시되지 않습니다.

rsync -avz /path\ with\ spaces/ user@remotelocation:/media/another\ path\ with/spaces/

작은 따옴표 나 큰 따옴표를 사용하면 암호를 입력 한 후 권한이 거부되었다는 메시지가 나타납니다

rsync -avz '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'

어떡해?

감사합니다.

답변:


12

예제 코드와 참조로 rzr의 답변을 확장하면 -s플래그를 추가 하고 경로를 인용하며 원격 경로에서 공백을 벗어날 염려가 없습니다.

rsync -avzs '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'

참고로 OP가 지정한 옵션은 다음과 같습니다.

  • -a, 보관 모드, -rlptgoD와 동일 (아니오 -H, -A, -X)
    • 포함 사항 :
    • -r, --recursive, 디렉토리로 재귀
    • -l, --links, 심볼릭 링크를 심볼릭 링크로 복사
    • -p, --perms, 권한 유지
    • -t, --times, 수정 시간 유지
    • -g, --group, 그룹 유지
    • -o, --owner, 소유자 유지 (수퍼 유저 만)
    • -장치, 장치 파일 유지 (수퍼 유저 만)
    • -특별, 특수 파일 보존
  • -v, --verbose, 자세한 정보 표시
  • -z, --compress, 전송 중 파일 데이터 압축

필요한 추가 매개 변수 :

  • -s, --protect-args, 공간 분할 없음, 와일드 카드 문자 만

13

로컬 쉘과 원격 쉘 모두에서 공백을 이스케이프해야합니다. 이 시도:

rsync -avz '/path with spaces/' 'user@remotelocation:/media/another\ path\ with/spaces/'

/path with spaces/로컬 셸 의 소스는 작은 따옴표를 묶어야 만 탈출 할 수 있습니다.'/path with spaces/' .

반면 대상의 경우 작은 따옴표를 사용하여 로컬 셸을 이스케이프하고 공백 \앞에 이스케이프 문자 ( )를 사용하여 원격 셸에서 공백을 이스케이프 합니다.


3
강조하려면-따옴표와 백 슬래시가 모두 필요합니다.
Sridhar Sarnobat

2

rsync 옵션 –protect-args (-s)를 살펴보십시오. 추가 슬래시가 필요하지 않습니다.


1
초보자 사용자가 따라갈 수있는 예를 제공하면 답변이 훨씬 향상됩니다. 감사합니다!
Geek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.