지난 한 시간 동안 대상 파일이 수정한 파일을 무시하고 한 디렉터리에서 다른 디렉터리로 파일을 복사하시겠습니까?

지난 한 시간 동안 대상 파일이 수정한 파일을 무시하고 한 디렉터리에서 다른 디렉터리로 파일을 복사하시겠습니까?

지난 한 시간 동안 대상(소스 제외) 파일이 수정되지 않은 경우 파일을 복사하는 명령 검색을 시도합니다.

답변1

내가 아는 한, 원하는 것을 정확히 수행하는 명령은 없습니다. 다음과 같은 것이 작동합니다( --dry-run결과에 만족한다고 확신하면 제거하고, --verbose더 조용하게 실행하려면 다음으로 교체하십시오).--quiet

src=/path/to/source
dst=/path/to/target

comm -z -23 \
        <(find "$src" -type f -printf '%P\0' | sort -z) \
        <(find "$dst" -type f -mmin -60 -printf '%P\0' | sort -z) |
    rsync --dry-run --verbose --archive --from0 --files-from - "$src" "$dst"

이는 상대적으로 새로운 유틸리티가 NUL 종료 회선을 처리하는 방법을 이해하고 있다고 가정합니다. 필요한 경우 파일 이름에 개행 문자가 포함되지 않는다는 것을 보장할 수 있는 한 명령에서 세 개의 -z플래그를 제거하고 로 바꿀 수 있습니다.rsync--from0\0find\n

답변2

모든 복사본이 기존 파일인 경우 다른 방법으로 볼 수 있습니다. 즉, 로컬 파일이 한 시간보다 오래된 경우 덮어씁니다. 그래서,목적지디렉토리를 작업 디렉토리로:

find . -mindepth 1 -maxdepth 1 -type f -mmin +60 -exec cp /source/directory/{} . \;

어디:

  • find . -mindepth 1 -maxdepth 1 -type f -mmin +60한 시간보다 오래된 로컬 파일 찾기
  • -exec cp /source/directory/{} . \;같은 이름의 이름으로 덮어쓰기/source/directory

관련 정보