rsync 대상 뒤에 슬래시를 추가해야하는 이유는 무엇입니까?


13

웹 페이지 에 따르면 rsync 대상 끝에 '/'를 추가하면 추가하지 않는 것과 다른 결과가 생성됩니다.

이 테스트를 시도했지만 확인할 수 없습니다.

$ mkdir dir{1..3}
$ touch dir1/file
$ rsync -r dir1/ dir2
$ rsync -r dir1/ dir3/
$ ls dir*
dir1:
file

dir2:
file

dir3:
file

목적지에 '/'를 추가하면 실제로 사용되는 경우가 있습니까?


매뉴얼 페이지의이 부분을 참조하고 A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination.있습니까? 그렇다면 여러분의 명령이 매뉴얼 페이지에 주어진 예제의 명령과 전혀 다른 점에 유의하십시오.
jesse_b

@Jesse_b 귀하의 의견은 저를 놀라게합니다 ... "대상의 끝에"/ "를 사용하면 rsync는 마지막 폴더 안에 데이터를 붙여 넣습니다. 대상의 끝에"/ "를 사용하지 않으면 rsync는 마지막 대상 폴더 이름을 지정하고 해당 폴더 안에 데이터를 붙여 넣습니다. "
Hauke ​​Laging

@HaukeLaging 혼란 스럽습니다. 놀랍습니다. 이 특정 섹션은 또한 소스에있는 슬래시를 나타냅니다. 당신이 한 경우에 따라서 rsync -r dir1/subdir1 dir2/는의 내용을 복사합니다 subdir1으로 dir2하지만 그랬다면 rsync -r dir1/subdir1/ dir2/그것 (내용 포함) 전체 디렉토리를 복사합니다 subdir1으로 dir2당신이 할 수 있도록./dir2/subdir1/
jesse_b을

@Jesse_b 나는 당신의 첫 코멘트에서 "남자"를 보지 못했습니다. 분명히 OP는 매뉴얼 페이지가 아니라 그가 링크 한 페이지를 나타냅니다.
Hauke ​​Laging

@HaukeLaging 오 이런, 심지어 그것을 보지 못했습니다. 나는 너무 빨리 감추고 있었고 "man page에 따르면"이라고 읽었다.
jesse_b

답변:


28

소스가 파일이고 대상 디렉토리가 존재하지 않으면 차이가 있습니다. 예를 들어 filesource 라는 파일을 가져 옵니다.

  • $ rsync file dest/file디렉토리 안에 사본을 만들지 dest
  • $ rsync file dest파일의 복사본을 만들 것 file이라고를dest

추가 (댓글에서) 디렉토리가 dest이미 존재하면 위의 두 경우 모두 사본 file이 작성됩니다 dest.

기본 예 :

~/test > touch file
~/test > mkdir dest1
mkdir: created directory 'dest1'
~/test > tree
.
├── dest1
└── file

1 directory, 1 file
~/test > rsync file dest1
~/test > rsync file dest2
~/test > rsync file dest3/
~/test > tree
.
├── dest1
│   └── file
├── dest2
├── dest3
│   └── file
└── file

2 directories, 4 files
~/test >

1
감사합니다. 따라서 디렉토리가 dest이미 존재하면 슬래시가 필요하지 않습니까?
EmmaV

바로 그거죠. 위의 예에서 디렉토리 dest가 존재하면 file두 경우 모두에 사본 이 작성됩니다.
resc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.