[rsync] rsync : 서버에서 대상 디렉토리를 만들도록 어떻게 구성 할 수 있습니까?

rsync로컬 컴퓨터에서 서버로 보내고 싶습니다 . 존재하지 않는 rsync디렉토리에서 서버에서 해당 디렉토리를 먼저 작성 하고 싶습니다 .

어떻게해야합니까?



답변

마지막으로 만들려는 리프 디렉토리보다 더 많은 것이 있으면 ssh ... mkdir -p먼저 별도의 명령을 실행 하거나 여기에 설명 된--rsync-path 대로 트릭을 사용할 수 있습니다 .

rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user@remote:/tmp/x/y/z/

또는 --relativeTony가 제안한 옵션을 사용하십시오 . 이 경우, 작성 될 소스의 디렉토리 구조가 아니라 존재해야하는 대상의 루트 만 지정하십시오.

rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/

이렇게하면 / pre_existing / dir / new / x / y / z /로 끝납니다.

그리고 “y / z /”를 만들지 만 “new / x /”안에 만들지 않으 ./려면 --relative시작 위치를 추가 할 수 있습니다 .

rsync -a --relative /new/x/./y/z/ user@remote:/pre_existing/dir/

/ pre_existing / dir / y / z /를 만듭니다.


답변

ssh를 사용하여 rsync를 연결한다고 가정하면 ssh 명령을 보내기 전에 다음을 수행하십시오.

ssh user@server mkdir -p existingdir/newdir

이미 존재하면 아무 일도 일어나지 않습니다


답변

-R, --relative옵션은이 작업을 수행 할 것입니다.

예를 들어 /var/named/chroot, 원격 서버에서 동일한 디렉토리 구조 를 백업 하고 작성하려면 -R그렇게하십시오.


답변

이것은 나를 위해 일했다 :

 rsync /dev/null node:existing-dir/new-dir/

이 메시지가 나타납니다.

skipping non-regular file "null"

그러나 빈 디렉토리가 걸려있는 것에 대해 걱정할 필요가 없습니다.


답변

하나의 rsync 명령으로 할 수 있다고 생각하지는 않지만 먼저 다음과 같이 추가 디렉토리를 ‘사전 생성’할 수 있습니다.

rsync --recursive emptydir/ destination/newdir

여기서 ’emptydir’은 로컬 빈 디렉토리입니다 (먼저 임시 디렉토리로 작성해야 할 수도 있음).

그것은 약간의 해킹이지만 나를 위해 작동합니다.

건배

크리스


답변

이 답변은 다른 답변을 사용하지만 상황에 따라 조금 더 명확해질 것입니다. 단일 디렉토리 항목 또는 여러 파일 인 rsyncing 대상을 지정하지 않았습니다.

따라서 소스 디렉토리 항목을 옮기고 그 안에 포함 된 파일을 옮기는 것이 아니라고 가정 해 봅시다.

로컬로 호출 된 디렉토리 data/myappdata/가 있고 그 아래에 많은 서브 디렉토리가 있다고 가정 하십시오. 당신은 data/당신의 목표 머신에 있지만 없습니다 data/myappdata/-이것은 충분히 쉽습니다 :

rsync -rvv /path/to/data/myappdata/ user@host:/remote/path/to/data/myappdata

원격 디렉토리에 다른 이름을 사용할 수도 있습니다.

rsync -rvv --recursive /path/to/data/myappdata user@host:/remote/path/to/data/newdirname

일부 파일 만 이동하고 파일이 포함 된 디렉토리 항목을 이동하지 않는 경우 다음을 수행하십시오.

rsync -rvv /path/to/data/myappdata/*.txt user@host:/remote/path/to/data/myappdata/

myappdata원격 시스템에 파일을 배치 할 디렉토리를 작성합니다 . 다시, data/디렉토리는 원격 시스템에 존재해야합니다.

덧붙여서, 내 -rvv플래그 사용은 이중으로 자세한 출력을 얻는 것이므로 필요한 재귀 적 행동뿐만 아니라 그것이 무엇인지 명확하게 알 수 있습니다.

rsync (Ubuntu 12.04의 3.0.9)를 사용할 때 얻는 것을 보여주기 위해

$ rsync -rvv *.txt user@remote.machine:/tmp/newdir/
opening connection using: ssh -l user remote.machine rsync --server -vvre.iLsf . /tmp/newdir/
user@remote.machine's password:
sending incremental file list
created directory /tmp/newdir
delta-transmission enabled
bar.txt
foo.txt
total: matches=0  hash_hits=0  false_alarms=0 data=0

희망이 조금 해결되기를 바랍니다.


답변

예 :

에서 : /xxx/a/b/c/d/e/1.html

: user @ remote : /pre_existing/dir/b/c/d/e/1.html

rsync :

cd / xxx / a / && rsync -auvR b / c / d / e / user @ remote : / pre_existing / dir /