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.