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/
또는 --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
이미 존재하면 아무 일도 일어나지 않습니다
답변
-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 /
