방화벽 뒤에 있는 로컬 컴퓨터에 디렉터리가 있다고 가정해 보겠습니다.
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/
이 중 내가 원하는 것은 하나도 없습니다.
rsync
원하는 결과를 얻을 수 있는 플래그가 있나요 ?- 그렇지 않다면 누구든지 간단한 해결책을 생각할 수 있습니까?
답변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
rsync
v2.6.7 이전 버전에서 파일을 추출하는 경우 rsync 명령을 찾을 수 있는 원격 위치를 지정할 수 있도록 설계된 옵션을 rsync
사용 하여 추출할 수 있습니다. --rsync-path
그러나 이를 사용하여 먼저 디렉터리를 변경할 수 있습니다. 단지,
rsync -aR --rsync-path='cd /a1/a2/.../aN/ && rsync' remote:one/two/ ~/workdir/