-r
또는을 사용하면 디렉토리로 재귀가 --recursive
발생합니다 . 또는 와 같음을 의미합니다 .rsync
-a
--archive
-rlptgoD
-a
-r
디렉토리가 있고 source/
다음 dest/
을 실행하는 경우:
rsync source dest
그런 다음 아무것도 rsync
건너뛰고 source/
복사하지 마세요. 내가 실행하면 :
rsync -a source dest
그런 다음 모든 내용을 -a
힌트 하고 복사하십시오 .-r
rsync
source/
dest/
list.txt
그러나 해당 줄이 포함된 파일이 있고 source
내 디렉터리의 전체 경로가 이면 source/
다음 /home/user/source/
을 실행합니다.
rsync -a --files-from=list.txt /home/user/ dest
그런 다음 내용 rsync
만 복사 source/
하고 dest/
내용은 복사하지 않습니다. 옵션 없이 명령을 실행해도 같은 일이 발생합니다 -a
.
하지만 동일한 명령을 실행하면 다음과 같습니다 -r
.
rsync -r --files-from=list.txt /home/user/ dest
그런 다음 rsync
모든 내용을 .source/
dest/
내 질문은 다음과 같습니다
- 이 옵션을 언제 사용해야 하는지
-a
힌트를 주지 않겠습니까 ? 이것이 예상되는 동작입니까?-r
--files-from=FILE
- 이 명령은 디렉토리이고 사용되거나 사용되지 않기 때문에 아무것도
rsync source dest
건너뛰고source/
복사하지 않는다는 점을 감안할 때 명령이 여전히 에 복사하는 이유는 무엇입니까 ?source/
-a
-r
rsync --files-from=list.txt /home/user/ dest
source/
dest/
- 이 옵션을 사용할 때
-a
암시된 다른 옵션은 여전히 유효합니까?--files-from=FILE
남은-r
유일한 옵션입니까?
편집하다:man
페이지를 좀 더 주의 깊게 읽어봐야 할 것 같습니다 . 옵션 설명 아래에 다음과 --files-from=FILE
같이 나와 있습니다.
--archive(-a) 옵션의 동작은 --recursive(-r)를 의미하지 않으므로 필요한 경우 명시적으로 지정합니다.
(내 첫 번째 질문에 대답합니다.)
--dirs (-d) 옵션이 암시되어 있습니다. 이 옵션은 대상 목록을 크게 건너뛰는 대신 대상 목록에 지정된 디렉터리를 생성합니다(이 옵션을 끄려면 --no-dirs 또는 --no-d 사용).
(두 번째 질문에 답합니다.)
답변1
-a
,--archive
이것은 와 동일합니다
-rlptgoD
. 이는 재귀적이고 거의 모든 것을 보존하고 싶다는 것을 표현하는 빠른 방법입니다(-H
한 가지 중요한 생략을 사용). 위 동등성에 대한 유일한 예외는 그것이--files-from
명시될 때인데, 이 경우 그것은-r
암시적이지 않습니다.
재귀를 사용하면 --files-from
비활성화됩니다(이 옵션은 누락된 유일한 옵션입니다). 사용자는 전송하려는 특정 파일이 무엇인지 정확히 알고 있으며 에서 사용되는 파일 목록에 해당 파일을 지정했다고 가정합니다 --files-from
.
파일 목록에 디렉터리가 지정되면 해당 디렉터리의 소유권, 타임스탬프 등은 동기화되지만 내용은 동기화되지 않습니다.
-r
그러나 다음과 같이 플래그를 명시적으로 추가 할 수 있습니다 .
rsync -av --files-from=file.list -r src/ dst/
그러면 원하는 효과가 나타납니다.