rsync가 추가 디렉토리를 추가하는 이유는 무엇입니까?

rsync가 추가 디렉토리를 추가하는 이유는 무엇입니까?

예전에 달리고 있었는데

rsync -rv /home/myname/mydir1 myhost:/home/myname/mydir1

그리고 얻었습니다

/home/mydir1/mydir1/...

중복된 "mydir1"이 없도록 이 문제를 어떻게 해결할 수 있습니까?

답변1

사용법 섹션의 예를 참조하세요.rsync 매뉴얼 페이지

당신은 그것을 사용할 수 있습니다

rsync -rv /home/myname/mydir1 myhost:/home/myname

또는

rsync -rv /home/myname/mydir1/ myhost:/home/myname/mydir1

답변2

rsync -rv /home/myname/mydir1/* myhost:/home/myname/mydir1

mydir1 아래의 파일(및 하위 디렉터리)만 복사

rsync -rv /home/myname/mydir1 myhost:/home/myname/mydir1

디렉토리 자체를 복사하여 mydir1/mydir1을 얻습니다.

    francois@zaphod:~/tmp$ rm -rf b
    francois@zaphod:~/tmp$ mkdir b
    francois@zaphod:~/tmp$ rsync -rv a/* b
    sending incremental file list
    a

    sent 80 bytes  received 35 bytes  230.00 bytes/sec
    total size is 0  speedup is 0.00
    francois@zaphod:~/tmp$ tree b
    b
    └── a

    0 directories, 1 file


 francois@zaphod:~/tmp$ rm -rf b
    francois@zaphod:~/tmp$ rsync -rv a b
    sending incremental file list
    created directory b
    a/
    a/a

    sent 108 bytes  received 63 bytes  342.00 bytes/sec
    total size is 0  speedup is 0.00
    francois@zaphod:~/tmp$ tree b
    b
    └── a
        └── a

    1 directory, 1 file

답변3

/이는 테일게이팅이 중요한 드문 상황입니다 . foo및 지정은 많은 명령에서 foo/동일합니다 . 그러나 의미상 차이가 있습니다. rsync를 포함한 일부 명령에서 후행은 /이것이 디렉터리라는 사실을 기반으로 특별한 작업을 수행하도록 명령에 지시합니다. 다음과 같은 상황이 발생하는 경우...

mkdir foo bar
touch foo/baz

...그리고 foo에서 bar로 콘텐츠를 복사하려는 경우 지정하지 마세요...

rsync -rv foo bar

...대신 지정하세요...

rsync -rv foo/ bar

그렇지 않으면 rsync는 전체 트리(상위 디렉터리 포함)를 찾은 대상 디렉터리에 복사한다고 가정합니다.


또 다른 유사한 예효과적인링크를 나열할 때의 의미는 다음과 같습니다 ls.

mkdir foo
touch foo/baz
ln -s foo bar

ls -l bar
lrwxrwxrwx 1 philip philip 3 May  7 14:58 bar -> foo

ls -l bar/
total 0
-rw-r----- 1 philip philip 0 May  7 14:58 baz

관련 정보