rsync가 파일을 수동으로 복사한 후 파일을 복사하는 이유는 무엇입니까?

rsync가 파일을 수동으로 복사한 후 파일을 복사하는 이유는 무엇입니까?

bash를 사용하여 ext4 위치에서 다른 폴더로 많은 폴더(~54GB)에 있는 많은 파일을 복사했습니다 cp ~/1 ~/2 -d -r -v -i. 그런 다음 모든 파일이 올바르게 복사되었는지 확인하고 싶어서 을 실행했지만 rsync --delete -vturOn ~/1 ~/2rsync는 모든 파일을 복사하려고했습니다. 왜 이런거야?

cp추신: 와 함께 사용하려고 했지만 오류가 -a발생했습니다 -d.

편집 : 답변여기모든 파일에 대해 --itemize-changes표시하는 플래그를 사용하게 되었습니다 . >f..t......매뉴얼 페이지에는 t수단 수정 시간이 다르며 유형 파일은 파일( f)이고 항목 속성만 수정되고 있음( .)이 있음을 나타냅니다. 이 올바른지? 그렇다면 변경되는 것은 수정 시간뿐인가요?

편집: 나는 rsync(없이 -n) 를 실행했고 t수정 시간이 다름에도 불구하고 모든 파일(실제 파일 내용)을 다시 복사했습니다. 이는 rsync가 어쨌든 diff 복사를 수행해야 하기 때문에 예상치 못한 일입니다. 주목해야 할 점은 무엇입니까?

편집: 동기화를 중지하고 -t매개변수 없이 다시 실행했습니다. 이제 항목별 변경 사항에 . 대신 'T'가 표시되었습니다 t. 앞으로 이러한 파일에 대해 rsync를 사용하려면 rsync를 통해 모든 파일을 적어도 한 번 복사해야 할 것 같습니다.

편집: 대상 파일을 삭제하고 -van매개변수를 사용하여 rsync를 사용하여 모든 것을 다시 복사했습니다.

답변1

rsync 문서에서:

Rsync는 크기나 마지막 수정 시간이 변경된 파일을 찾는 "빠른 확인" 알고리즘(기본값)을 사용하여 전송해야 하는 파일을 찾습니다.

또한 소스와 타겟이 모두 로컬인 경우 기본적으로 옵션 rsync으로 실행됩니다 .--whole-file

-W, --whole-file

이 옵션을 사용하면 rsync의 델타 전송 알고리즘이 사용되지 않으며 대신 전체 파일이 있는 그대로 전송됩니다. 원본 컴퓨터와 대상 컴퓨터 사이의 대역폭이 디스크 대역폭보다 높을 때(특히 "디스크"가 실제로 네트워크로 연결된 파일 시스템인 경우) 이 옵션을 사용하면 전송 속도가 더 빨라질 수 있습니다. 이는 원본과 대상이 모두 로컬 경로로 지정된 경우 기본값이지만 일괄 쓰기 옵션이 적용되지 않는 경우에만 해당됩니다.

확실하진 않지만 옵션을 원하실 것 같습니다 --checksum.

-c, --checksum              skip based on checksum, not mod-time & size

체크섬을 계산하려면 디스크에서 소스 파일과 대상 파일을 모두 읽어야 합니다.

이에 대한 추가 정보:

https://superuser.com/a/118984/219809

https://serverfault.com/a/279346

관련 정보