답변:
마지막으로 만들려는 리프 디렉토리보다 더 많은 것이 있으면 ssh ... mkdir -p
먼저 별도의 명령을 실행 하거나 여기에 설명 된--rsync-path
대로 트릭을 사용할 수 있습니다 .
rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user@remote:/tmp/x/y/z/
또는 --relative
Tony가 제안한 옵션을 사용하십시오 . 이 경우, 작성 될 소스의 디렉토리 구조가 아니라 존재해야하는 대상의 루트 만 지정하십시오.
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
이미 존재하면 아무 일도 일어나지 않습니다
rsync
응답하지 않습니다.
ssh
이 아니며 원격 쪽에서 rsync
연결됩니다 rsync daemon
.
-R, --relative
옵션은이 작업을 수행 할 것입니다.
예를 들어 /var/named/chroot
, 원격 서버에서 동일한 디렉토리 구조 를 백업 하고 작성하려면 -R
그렇게하십시오.
/./
소스 경로를 사용하여 만들 경로의 일부만 지정할 수도 있습니다 . 자세한 내용은 매뉴얼 페이지를 참조하십시오.
rsync
대상 폴더가 없으면 자동으로 디렉토리를 만들지 않습니다. 한숨.
--relative
. 당신이 생각하는 것을하지 않을 수도 있습니다.
--relative
와 함께 /./
대부분의 초보자가 찾고있는 것입니다. rsync -avz -e ssh --progress --relative ~/./Desktop/ TARGET_IP:~/
데스크탑의 내용을 대상 데스크탑으로 복사합니다. 사용자 이름의 차이가 어떻게 영향을 줄 수 있는지 모릅니다.
이것은 나를 위해 일했다 :
rsync /dev/null node:existing-dir/new-dir/
이 메시지가 나타납니다.
skipping non-regular file "null"
그러나 빈 디렉토리가 걸려있는 것에 대해 걱정할 필요가 없습니다.
하나의 rsync 명령으로 할 수 있다고 생각하지는 않지만 먼저 다음과 같이 추가 디렉토리를 '사전 생성'할 수 있습니다.
rsync --recursive emptydir/ destination/newdir
여기서 'emptydir'은 로컬 빈 디렉토리입니다 (먼저 임시 디렉토리로 작성해야 할 수도 있음).
그것은 약간의 해킹이지만 나를 위해 작동합니다.
건배
크리스
rsync /dev/null node:existing-dir/new-dir/
위의 제안을 참조하십시오 .
이 답변은 다른 답변을 사용하지만 상황에 따라 조금 더 명확해질 것입니다. 단일 디렉토리 항목 또는 여러 파일 인 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
희망이 조금 해결되기를 바랍니다.
rsync -rvv /path/to/data/myappdata user@host:/remote/path/to/data/myappdata
대상에서 작성된 것은 / remote / path / to / data / myappdata / myappdata /
rsync -rvv /path/to/data/myappdata/ user@host:/remote/path/to/data/myappdata
mkdir
해킹을 사용하고--rsync-path="echo f > /public/.keep && rsync /public/.keep /public/newfolder/ && rsync" \
있습니다. 추가 파일을 생성하지만 나중에 제거 할 수 있습니다.