SSH를 사용하여 rsync를 원격 서버에 연결할 때 원격 경로에서 공백 등을 어떻게 탈출합니까? 간단한 백 슬래시는 로컬 bash 프롬프트를위한 공간을 이스케이프하지만 원격 시스템에서는 공간이 경로에서 중단으로 읽혀 지므로 해당 경로의 끝을 표시합니다.
따라서 내가 할 때 rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/
원격 서버는 원격 서버가 /path/to/dest/some/
그 대상을 원격으로 찾을 수 없기 때문에 그것을 읽 습니다. 실제 대상은 "일부"가 아니라 "일부"이기 때문입니다.
동일한 명령을 시도하고 백 슬래시와 공백을 이스케이프하여 로컬 bash 프롬프트를 벗어나 원격 서버의 백 슬래시를 유지하면 (백 슬래시 총계 /path/to/dest/some\\\ dir/
:) 실제로 백 슬래시를 원격 서버로 보내지 만 원격 서버는 그런 다음 경로와 공백을 제거 /path/to/dest/some\/
하지 않고 경로를 해석합니다 /path/to/dest/some\ dir/
.
경로를 따옴표로 감싸려고하면 거의 같은 방식으로 작동하여 공간에서 경로를 효과적으로 차단합니다. 따라서 로컬 bash 프롬프트를 통과하는 것만 작동합니다.
처음에는 "-"(space-hyphen-space) 세그먼트가있는 경로를 사용하고 있었고 원격 서버가 오류 rsync: on remote machine: -: unknown option
를 반환 했습니다.이 전체 공백 탈출 노력이 처음부터 시작되었습니다.
따라서 원격 경로에서 공백이나 하이픈과 같은 다른 잘못된 문자를 제거하지 않고도 원격 서버에서 올바르게 작동하려면 어떻게해야합니까?
-s
필요없이 주소 문제를 수동으로 이중 탈출 적용합니다.