
방화벽 뒤에 있는 로컬 컴퓨터에 디렉터리가 있다고 가정해 보겠습니다.
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/
변수이지만 알려진 'N'에 대해 원격 컴퓨터에서만 복사하기를 원합니다 .
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/
둘 중 어느 것도 내가 원하는 것이 아니다.
rsync
원하는 결과를 얻을 수 있는 플래그가 있습니까 ?- 그렇지 않다면 누구나 간단한 해결책을 생각할 수 있습니까?
답변1
--relative의 경우 소스 디렉터리 경로에 점을 삽입해야 합니다.
rsync -av --relative remote:/a1/a2/.../aN/./one/two ~/workdir/
설명서를 참조하세요:
-R, --상대적
[...]
지정한 각 경로에 대해 암시적 디렉터리로 전송되는 경로 정보의 양을 제한하는 것도 가능합니다. 송신 측의 최신 rsync(2.6.7부터 시작)를 사용하면 다음과 같이 소스 경로에 점과 슬래시를 삽입할 수 있습니다.
rsync -avR /foo/./bar/baz.c remote:/tmp/
답변2
rsync
v2.6.7 이전 버전 에서 파일을 가져오는 경우 원격에서 rsync 명령을 찾을 수 있는 위치를 지정할 수 있는 rsync
의 옵션을 활용하여 이 작업을 수행할 수 있습니다. --rsync-path
그러나 이를 사용하여 먼저 디렉터리를 변경할 수 있습니다. 간단히,
rsync -aR --rsync-path='cd /a1/a2/.../aN/ && rsync' remote:one/two/ ~/workdir/