가능한 해결책

가능한 해결책

rsync 버전 3.2.4에서는행동 변화새로운 인수 보호 방법에 대해 설명합니다. 이는 파일이나 폴더의 파일 이름에 공백이 포함된 경우에 해당됩니다.

나는 그 주장을 알고 있다 --old-args. 그러나 이는 해결 방법이며 여전히 "기존 방식"을 적용합니다. 내 목표는 다음과 같습니다

  1. 3.2.4에 도입된 "새로운" 인수 보호 방법을 사용하세요.
  2. 이 "방식"을 사용하는 스크립트는 rsync의 이전 버전과 새 버전 모두에서 작동해야 합니다.아니요현재 시스템의 rsync 버전을 확인하세요.

어떻게 해야할지 모르겠지만 아이디어가 있습니다.

나는 과거에 이 작업을 수행한 적이 있습니다(이것은 rsync 3.2.3 이전 버전에서는 작동했지만 3.2.4 이상에서는 작동하지 않았습니다).

rsync -aiv host:"a simple file.pdf" .

가능한 해결책

-s내가 원하는 솔루션은 이전 rsync 버전에도 존재하는 솔루션을 사용하는 것입니다 .

--protect-args, -s       no space-splitting; wildcard chars only

"이렇게 교체 했어요'

rsync -aiv host:'a simple file.pdf' . -s

이것은 내 테스트 환경에서 작동하는 것 같습니다. 하지만 이것이 괜찮은지 잘 모르겠습니다.

IMHO 이 솔루션의 장점은 다음과 같습니다.

  • 이전 버전의 rsync에서 작동합니다.
  • 최신 버전(3.2.6)에서는 이것이 -s기본 동작인 것 같습니다.

사이드 노트-s: was 의 긴 버전 --protect-args이지만 그때는 was였습니다.--secluded-argsrsync 3.2.6에서 다음으로 이름이 변경되었습니다."이것이 rsync의 기본 백슬래시 이스케이프 매개변수 보호 동작과 어떻게 다른지 더 명확하게 설명합니다." 그러나 이전 이름은 --protect-args여전히 ​​허용됩니다.

관련 정보