rsync는 상대 경로의 일부를 사용합니다.

rsync는 상대 경로의 일부를 사용합니다.

방화벽 뒤에 있는 로컬 컴퓨터에 디렉터리가 있다고 가정해 보겠습니다.

local:/home/meee/workdir/

그리고 방화벽 반대편에 있는 원격 시스템의 디렉터리는 다음과 같습니다.

remote:/a1/a2/.../aN/one/two/
remote:/a1/a2/.../aN/one/dont-copy-me{1,2,3,...}/

... N>= 0이 되어야 합니다.

내 로컬 컴퓨터 에는 rsync.one/two/

local:/home/meee/workdir/one/two/

을 사용하면 rsync remote:/a1/a2/.../aN/one/two/ ~/workdir/다음과 같이 끝납니다.

local:/home/meee/workdir/two/

을 사용하면 rsync --relative remote:/a1/a2/.../aN/one/two/ ~/workdir/다음과 같이 끝납니다.

local:/home/meee/workdir/a1/a2/.../aN/one/two/

이 중 내가 원하는 것은 하나도 없습니다.

  1. rsync원하는 결과를 얻을 수 있는 플래그가 있나요 ?
  2. 그렇지 않다면 누구든지 간단한 해결책을 생각할 수 있습니까?

답변1

--relative의 경우 소스 디렉터리 경로에 점을 삽입해야 합니다.

rsync -av --relative remote:/a1/a2/.../aN/./one/two ~/workdir/

설명서를 참조하세요:

-R, --상대적

[...]

또한 지정된 각 경로에 대해 암시적 디렉터리로 전송되는 경로 정보의 양을 제한할 수도 있습니다. 송신 측(2.6.7 기준)의 최신 rsync를 사용하면 다음과 같이 소스 경로에 점과 슬래시를 삽입할 수 있습니다.

             rsync -avR /foo/./bar/baz.c remote:/tmp/

답변2

rsyncv2.6.7 이전 버전에서 파일을 추출하는 경우 rsync 명령을 찾을 수 있는 원격 위치를 지정할 수 있도록 설계된 옵션을 rsync사용 하여 추출할 수 있습니다. --rsync-path그러나 이를 사용하여 먼저 디렉터리를 변경할 수 있습니다. 단지,

rsync -aR --rsync-path='cd /a1/a2/.../aN/ && rsync' remote:one/two/ ~/workdir/

관련 정보