rsync -u 옵션은 두 폴더를 동기화하는 데 어떻게 도움이 됩니까?

rsync -u 옵션은 두 폴더를 동기화하는 데 어떻게 도움이 됩니까?

source폴더를 폴더와 동기화 destination하고 폴더의 모든 변경 사항이 source대상에 반영되기를 원합니다 .

이 경우 다음과 같이 rsync 명령을 사용합니다.

rsync -av --progress --delete "/source/" "/destination"

/를 사용하여 내용을 지정하려면 소스를 표시하고 대상을 표시하려면 /를 사용하지 마세요.

이제 소스의 수정 시간이 최신인 경우 해당 -u옵션을 사용하여 대상을 업데이트 해야 합니까? 아니면 -av그것으로 충분합니까?

-i이 옵션 이 필요합니까 ? 감사합니다!

-u, --update 이는 rsync가 대상에 존재하고 소스 파일보다 수정 시간이 최신인 모든 파일을 건너뛰도록 합니다. (기존 대상 파일의 수정 시간이 소스 파일의 수정 시간과 동일하고 크기가 다른 경우 업데이트됩니다.) 이는 심볼릭 링크나 기타 특수 파일의 복사에는 영향을 미치지 않습니다. 또한 보낸 사람과 받는 사람 간의 파일 형식 차이는 개체의 날짜에 관계없이 항상 업데이트될 만큼 중요한 것으로 간주됩니다. 즉, 원본에 디렉터리가 있고 대상에 파일이 있는 경우 타임스탬프에 관계없이 전송이 발생합니다. 이 옵션은 제외가 아닌 전송 규칙이므로 파일 목록에 들어가는 데이터 및 삭제에 영향을 미치지 않습니다. 단순히 수신자가 전송을 요청하는 파일을 제한합니다.

--delete 이는 rsync에게 수신 측에서 불필요한 파일(송신 측에 없는 파일)을 삭제하도록 지시하지만 동기화되는 디렉터리에서만 삭제합니다. 디렉토리 내용(예: "dir/*")에 와일드카드를 사용하지 않고 전체 디렉토리(예: "dir" 또는 "dir/")를 보내도록 rsync에 요청해야 합니다. 와일드카드는 쉘에 의해 확장되므로 rsync는 파일의 상위 디렉터리가 아닌 단일 파일을 전송하라는 요청을 받습니다. --delete-excluded 옵션을 사용하거나 전송 측에서만 일치하도록 규칙을 표시하지 않는 한 전송에서 제외된 파일도 삭제되지 않습니다(필터링 규칙 섹션의 포함/제외 수정자 참조). rsync 2.6.7 이전에는 --recursive가 활성화되지 않으면 이 옵션이 효과가 없었습니다. 2.6.7부터 --dirs (-d)가 활성화된 경우에도 삭제가 발생하지만 내용이 복사되는 디렉터리에만 삭제가 발생합니다. 이 옵션은 잘못 사용하면 위험할 수 있습니다! --dry-run 옵션(-n)을 사용하여 먼저 실행을 시도하여 삭제하려는 파일을 확인하는 것은 매우 좋은 생각입니다. 발신자가 I/O 오류를 감지하면 대상에 있는 모든 파일의 삭제가 자동으로 금지됩니다. 이는 송신측의 임시 파일 시스템 오류(예: NFS 오류)로 인해 대상에서 많은 수의 파일이 삭제되는 것을 방지하기 위한 것입니다. --ignore-errors 옵션을 사용하여 이를 재정의할 수 있습니다. --delete 옵션은 --delete-WHEN 옵션 및 --delete-excluded 중 하나와 충돌 없이 조합하여 사용할 수 있습니다. 그러나 --delete-WHEN 옵션이 지정되지 않은 경우 rsync는 rsync 3.0.0 이상과 통신할 때 --delete-during 알고리즘을 선택하고, 이전 rsync와 통신할 때는 --delete-before 알고리즘을 선택합니다. --delete-delay 및 --delete-after도 참조하세요.

답변1

이제 소스의 수정 시간이 최신인 경우 해당 -u옵션을 사용하여 대상을 업데이트 해야 합니까?

아니, 이미 그런 일이 일어나고 있습니다. 수행되는 작업은 -u다음과 같습니다.예방하다대상이 최신인 경우 변경됩니다. 그렇지 않은 경우 -u해당 파일은 소스 버전(이전 버전일 수 있음)으로 업데이트됩니다.

-i 옵션이 필요합니까?

-i(예: --progress)은 동기화 동작에 영향을 주지 않고 표시된 출력에만 영향을 미칩니다. 선택한 각 파일에 대한 추가 정보만 표시됩니다.

답변2

귀하는 이미 훌륭하고 수용 가능한 답변을 가지고 있습니다. 이 답변은 해당 답변을 보완합니다.

소스의 수정 시간이 최신인 경우 대상을 업데이트 하려면 -u 옵션을 사용해야 합니까 ? 아니면 -av로 충분합니까?

옵션이 -u좀 그렇네요이상한IMHO 이상한 점은 (분명히) rsync소스 파일 업데이트를 방해한다는 것입니다.시간 변경소스에서 최신 버전인 경우. 이는 일부 상황에서 유용합니다.

-i 옵션이 필요합니까?

국제해사기구, -i(또한 ~으로 알려진 --itemize-changes) 옵션은 다음과 같습니다.극도로사용 중 발생하는 일반적인 문제를 해결하는 데 유용합니다 rsync. 이 옵션을 사용할 때 발생하는 한 가지 문제점은 man rsync아래에 설명되어 있습니다.

... 11자 길이의 비밀 출력입니다. 일반적인 형식은 YXcstpoguax 문자열과 유사합니다.

... 그리고신비한작동하는 단어입니다. 그러나 다음 표를 찾았습니다.돕다조금. 이 테이블을 복사해서 붙여넣었습니다.# comment다음 명령을 호출하는 쉘 스크립트를 입력하십시오 rsync.

# decode --itemize-changes output:
#
# YXcstpoguax  path/to/file
# |||||||||||
# `----------- "Y" - the type of update being done::
#  ||||||||||   < : file is being transferred to the remote host (sent).
#  ||||||||||   > : file is being transferred to the local host (received).
#  ||||||||||   c: local change/creation for the item, such as:
#  ||||||||||      - the creation of a directory
#  ||||||||||      - the changing of a symlink,
#  ||||||||||      - etc.
#  ||||||||||   h: the item is a hard link to another item (requires --hard-links).
#  ||||||||||   .: the item is not being updated (though it might have attributes that are being modified).
#  ||||||||||   *: means that the rest of the itemized-output area contains a message (e.g. "deleting").
#  ||||||||||
#  `---------- "X" - the file type:
#   |||||||||   f for a file,
#   |||||||||   d for a directory,
#   |||||||||   L for a symlink,
#   |||||||||   D for a device,
#   |||||||||   S for a special file (e.g. named sockets and fifos).
#   |||||||||
#   `--------- c: different checksum (for regular files)
#    ||||||||     changed value (for symlink, device, and special file)
#    `-------- s: Size is different
#     `------- t: Modification time is different; T: time set to transfer time
#      `------ p: Permission are different
#       `----- o: Owner is different
#        `---- g: Group is different
#         `--- u: reserved for future use
#          `-- a: The ACL information changed
#           `- x: extended attribute changed

예를 들어, -i이 옵션을 사용하여 생성된 다음 출력 행을 고려하십시오.

>f..t....... Desktop/pics/SomePicture.jpg

다음으로 디코딩:

  • >:파일이 localhost로 전송 중입니다(수신).
  • f: 파일 전송 중
  • t: 수정시간이 다름

관련 정보