SRC에서 DEST로 재동기화하고 DEST 파일을 확인한 다음 SRC 파일을 삭제하려면 어떻게 해야 합니까? (재귀적으로)

SRC에서 DEST로 재동기화하고 DEST 파일을 확인한 다음 SRC 파일을 삭제하려면 어떻게 해야 합니까? (재귀적으로)

이 두 변수에 의해 유지되는 bash 스크립트에 두 개의 디렉토리가 있습니다

$SRC

$DEST


어떻게 해야 할까요?rsync

  1. $SRC/에서 $DEST/로 파일 복사,
  2. $DEST/* 파일이 $SRC/ 파일과 일치하는지 확인(가장 일치하는 항목이 있지만 느림)
  3. $SRC/ 파일을 삭제하시겠습니까?

내가 Google에 제공하는 모든 것은 rsync를 수행한 다음 DEST 파일을 삭제하는 예를 제공합니다.

rsync나는 이것을 이해하지 못합니다. 왜 대상 디렉토리에 대해 수행한 다음 삭제합니까 ?

구글 검색을 해보고 무슨 뜻인지 알아보세요.

답변1

따라서 파일 이동 옵션은 입니다 --remove-source-files. 여기는매뉴얼 페이지, 여기에서 몇 가지 토론을 참조하세요. https://unix.stackexchange.com/questions/43957/using-rsync-to-move-not-copy-files-between-directories

rsync는 항상 체크섬을 사용하여 파일을 확인하지만 그것이 문제에 충분한지 여부는 사용자에게 달려 있습니다. 대상의 체크섬은 디스크에 쓴 후가 아닌 전송 시 계산되므로 결과 파일을 기반으로 계산되지 않으며 기록할 때 OS에서 오류가 발생하지 않는 한 오류가 발생하지 않습니다. 이에 대한 일부 논의는 다음과 같습니다. https://unix.stackexchange.com/questions/30970/does-rsync-verify-files-copied-between-two-local-drives

이것이 요구 사항에 충분하지 않은 경우 소스를 삭제하지 않고 파일을 rsync하는 스크립트를 작성하고 rsync를 다시 실행하여 -c체크섬과 일치하지 않는 파일을 선택/복사한 다음 마지막으로 소스 파일을 삭제하는 rm것을 고려하십시오.

답변2

rsync이는 의 --remove-source-files옵션을 간단하게 사용하는 것이어야 합니다.

rsync --dry-run --stats -av --remove-source-files "$SRC/" "$DEST/"

만족스러우면 제거 --dry-run(및 아마도 --stats)하면 명령이 수행해야 한다고 생각하는 작업이 수행될 것입니다.

관련 정보