rsync 삭제 옵션의 차이점은 무엇입니까?


118

난에 표시 rsync를 man 페이지 의 숫자가 있다는 delete옵션이 있지만, 정말 그들 사이의 차이를 이해하지 않습니다. 이 옵션들 사이의 차이점은 무엇입니까?

 --del                   an alias for --delete-during
 --delete                delete extraneous files from dest dirs
 --delete-before         receiver deletes before transfer (default)
 --delete-during         receiver deletes during xfer, not before
 --delete-delay          find deletions during, delete after
 --delete-after          receiver deletes after transfer, not before
 --delete-excluded       also delete excluded files from dest dirs

2
--delete-before설명되어 (default)있습니까? 무슨 (default)뜻 인지 이해할 수 없습니다 .
Marco Marsala

1
man페이지 에서 더 이상 기본값으로 지정되지 않았습니다 rsync version 3.1.2 protocol version 31. 그러나 인용 된 텍스트가있는 버전에 대한 추측은을 사용 --delete하지 않고 기본값을으로 --delete-WHEN지정한 --delete-WHEN경우 WHEN와 같습니다 before.
Tom Hale

답변:


114
  • --del/--delete_during: 그들은 복사로 대상 디렉토리에서 파일을 삭제합니다 (에 비해 메모리를 저장 --delete-before: --delete-beforedeleteables 찾기 위해 별도의 검사를한다)

  • --delete: 소스 디렉토리에없는 경우 대상 디렉토리의 파일을 삭제합니다.

  • --delete-before: 소스 디렉토리에서 file-with-same-name을 복사하기 전에 대상 디렉토리에서 파일을 삭제하십시오.

  • --delete-during: 대상 디렉토리의 파일을 삭제하고 소스 디렉토리에서 동일한 이름의 파일을 복사하는 동안

  • --delete-delay: 전송 중에 마크가 삭제되지만 전송이 완료 될 때까지 기다립니다.

  • --delete-after: 수신기는 이전이 아닌 전송 후 삭제합니다 ... rsync의 다른 부분이 다른 파일을 다른 곳 으로 옮긴 경우 전송 중에 삭제할 항목을 결정하는 대신 파일 대신 디렉토리를 확인 --delete-delay하기 때문에 대신이 파일을 원합니다 모든 것이 끝나면 삭제해야합니다.--delete-delay--delete-after

  • --delete-excluded: 소스 디렉토리에서 전송에서 명시 적으로 제외 된 대상 디렉토리에서 파일을 삭제합니다.

rsync의 요점은 복사하지 않고 보관하는 것입니다. 이것은 중요한 차이점입니다. 삭제 / 변경된 파일을 처리하는 것이 중요하며 많은 경우 미묘한 차이가 있습니다.

--delete특히 플래그는 내가 여러 번 망쳐 본 것입니다. 많은 사람들이 rsync를 사용하여 파일을 우선 순위가 낮은 스토리지로 이동합니다.이 경우 이동하려는 파일이 대상 디렉토리에 여전히 존재합니다. 그것은 삭제가하는 것이 아닙니다 : --delete소스 디렉토리에서 파일을 삭제할 때 대상 디렉토리에서도 파일이 삭제되므로 대상이 정크로 가득 차지 않도록하십시오 ... 한 사람이 백업을 지우는 것을 보았습니다. 새 드라이브를 넣고 야간 rsync 스크립트를 끄지 않습니다. 스크립트는 소스 디렉토리가 비어 있음을 확인하고 대상 디렉토리의 모든 파일을 삭제하므로 일치합니다.

다른 옵션의 대부분은 공간 또는 성능과 관련이 있습니다. 전송하기 전에 파일 전송을 성공적으로 수행하려면 파일을 삭제하는 것이 중요하지만 장치가 너무 작아서 모든 정보의 사본 2 개를 처리 할 수없는 경우 이동하는 동안 삭제해야합니다. 여러 플랫폼에서 오랜 역사를 지니고 있기 때문에 약간의 별난 일이 있습니다. 특정 행동에 익숙한 사람들이 혼동하지 않도록 일부 옵션이 추가되었습니다.


3
따라서 --delete와 --delete-가 같은 것입니까? --delete가 파일을 삭제할 때 man rsync가 말하지 않습니다.
ppr

@ppr : 시스템에 따라 다릅니다. 특정 옵션이 너무 많은 이유는 Solaris에서 삭제! = HP-UX에서 삭제! = AIX에서 삭제! = Linux에서 삭제하기 때문입니다.
Satanicpuppy

전체 디렉토리 delete-after를 재 동기화 할 때, 동기화 중에 또는 전체 디렉토리가 미러링 된 후에 만 ​​각 파일을 삭제합니까? delete-after내 필요에 충분 하다고 생각 했지만 내 드라이브 중 하나를 백업 할 때 장치에 공간이 남아 있지 않습니다.
Sridhar Sarnobat

1
@ Sridhar-Sarnobat : 어느 쪽이든. 이동하려는 모든 것을 이동시키고 완료되면 사물을 삭제하기 시작합니다. 모든 것을 옮기기 전에 삭제하려면 --delete-during
Satanicpuppy를 사용하십시오.

2
약간의 경험을 한 후에도 (Linux에서는) delete-during항상 막지는 못합니다 no space left on device. 따라서 delete-before거의 가득 찬 드라이브를 미러링 할 때와 대상 드라이브가 거의 가득 찬 경우처럼이를 피할 수있는 유일한 방법입니다.
Sridhar Sarnobat 님이

1

두 가지 일이 있습니다 :

  1. 누가 삭제합니까
  2. 그것이 일어날 때

발신자 또는 수신자에게 삭제를 지시 할 수 있습니다 (왜 중요한지 잘 모르겠습니다). 따라서 한 컴퓨터의 rsync가 다른 컴퓨터의 rsync 서버에 연결될 때 누가 delete 명령을 효과적으로 발행하는지 결정합니다.

발생하면 아주 쉽습니다 ... 전에 모든 파일이 삭제되고 rsync가 파일 위에 복사됩니다. 동안은 파일 목록을 통과 할 때 파일과 관련하여 파일을 삭제 한 후 모든 파일이 전송 될 때까지 기다렸다가 원격을 삭제합니다. 전송이 중단 된 경우에만 중요합니다.


이 옵션 중 어느 것도 발신자 측 에서 항목을 삭제하는 것과 관련이 없다고 확신 합니다. 모두 (AFAIK) 수신자 측 에서 항목을 삭제하는 것과 관련 있습니다. 또한 "이전에 모든 파일이 삭제되고 파일에 대한 rsync 사본이 복사 됨"을 의미합니다. 맞습니까? 나는 기대 --delete-before하지 사라 될 필요가 파일 만 삭제하는 모든 파일을! 그러나 rsync가 모든 것을 삭제 한 다음 "새로운"(아마도 변경되지 않은) 데이터를 통해 전송할 가능성이 있다고 생각합니다 .
Quuxplusone

1
아, "발신자 쪽에서 삭제" rsync에서 지원되지만 해당 옵션의 이름은입니다 --remove-source-files.
Quuxplusone

1

소스 디렉토리가로 끝나는 경우 /*rsync는 디렉토리 자체가 아닌 해당 파일 만 고려 하므로 대상에서 삭제하려는 파일이 없다는 점을 언급해야합니다.

위의 삭제 옵션을 지정했지만 rsync가 삭제되지 않는 것처럼 보이는 경우 디렉토리 자체를 의미 할 때 실수로 파일 목록을 제공하지 않고 파일 목록을 제공하지 않는지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.