날짜별 파일 재동기화

날짜별 파일 재동기화

다음과 같은 파일 구조가 있습니다.

...folders/to/copy
...folders/to/mirror

나는 해왔다:

rsync --ignore-existing -raz --progress $source $destination

이는 두 폴더 트리의 모든 내용을 최신 상태로 유지하는 데 유용합니다. 하지만 이제는 24시간 전에 변경된 파일에 대해서만 이 작업을 수행하면 됩니다. 나는 다음과 같은 것을 시도했습니다 :

rsync -rav `find $source -mtime 1` $destination

문제는 이것이 파일 트리를 엉망으로 만들고 필요한 방식으로 작동하지 않는다는 것입니다. 더 좋은 방법이 있나요?

"폴더"와 그 안의 모든 항목에 대한 상대 경로를 사용하여 한 위치에서 다른 위치로 파일 구조를 백업하고 24시간이 지난 파일만 남겨 두고 싶습니다( mtime).

답변1

이를 사용하여 find | rsync아래와 같이 복사하려는 파일을 필터링 할 수 있습니다.

src=/source/folders/to/./copy
dst=/destination/mirrored/folders

find "$src/" -type f -mtime +0 -print0 |
    rsync --dry-run -a -iv --files-from - --from0 / "$dst"

--dry-run일련의 결과에 만족하면 삭제하십시오. -iv보다 조용한 작동을 원하시면 제거하세요.

/./소스 경로의 일부는 파일 경로가 보존되어야 하는 지점을 정의한다는 점을 지적해야 합니다 . 예를 들어 경로가 있는 경우 /source/folders/to/./copy/sub/here.txt해당 대상은 가 됩니다 /destination/mirrored/folders/copy/sub/here.txt. 자세한 내용은 --files-from--relative( -R) 옵션에 대한 설명서를 참조하세요 . man rsync소스 경로가 상대적인 경우에도 괜찮습니다.

이 솔루션은 findGNU 또는 기타 에서 사용할 수 있습니다 . 해당 옵션 이 -print0없으면 제거할 수도 --from0있지만 . 다음 토론을 참조하세요.-print0-exec printf '%s\0' {} +GNU find의 -print0에 대한 POSIX 대체.

관련 정보