지난 한 시간 동안 대상(소스 제외) 파일이 수정되지 않은 경우 파일을 복사하는 명령 검색을 시도합니다.
답변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
\0
find
\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