우리는 디렉터리 트리 구조를 유지하면서 2일보다 오래된 일부 대용량 파일을 정기적으로 NAS에 보관해야 합니다. 이러한 파일은 7일 동안 소스 디렉터리에 유지됩니다.
처음에 우리는 find
이것을 위해 다음을 사용했습니다:
find ${SOURCE_DIR} -type f -mtime +2 -exec ksh -c 'mkdir -p $(dirname ${DEST_NAS_DIR}$0) && cp -p $0 ${DEST_NAS_DIR}$0' {} \;
그러나 우리는 스크립트가 이미 보관된 파일을 복사하고 있어서 각 실행에 너무 많은 시간이 걸리는 것을 발견했습니다.
cp에는 -n/--no-clobber 옵션이 없습니다. 그렇다면 대상에서 동일한 파일을 덮어쓰는 것을 어떻게 방지할 수 있습니까? 어떤 아이디어가 있나요?
인사!
답변1
rsync
시스템에서 사용 가능한 경우 해당 --ignore-existing
플래그를 사용할 수 있습니다.
find ${SOURCE_DIR} -type f -mtime +2 \
-exec rsync --ignore-existing '{}' ${DEST_NAS_DIR} \;
아마도 이 -u
플래그는 흥미로울 수 있습니다. 보낸 사람이 기존 파일의 업데이트 버전도 가지고 있는지 확인하고 그렇다면 업데이트합니다.
--archive
스키마를 활성화 할지 확인하세요 . 이는 시간, 소유권 등에 대한 일부 정보를 반복하고 유지하는 것을 의미합니다. 자세한 내용 보기 man rsync
.
답변2
다음 방법을 사용하여 부정행위를 시도할 수 있습니다.
...yes n|cp -i -p $0 ${DEST_NAS_DIR}$0' {}...
불행하게도 이것을 테스트할 AIX가 없지만 이를 위해서는 기존 파일을 덮어써야 하며 'n'을 보내면 이를 방지할 수 있습니다.
PS 현재는 테스트해 볼 곳이 없으니, 실제 파일을 사용하기 전 테스트를 해주시기 바랍니다.