최신 파일부터 시간순으로 재동기화하는 방법

최신 파일부터 시간순으로 재동기화하는 방법

나는 다음과 같은 디렉토리 구조를 가지고 있습니다

item_1
item_12
item_33
..etc..

이제 가장 최근 파일부터 동기화를 시작하고 목록을 시간순으로 동기화하고 싶습니다.

또는 옵션 2: 1주일 이내에 디렉터리를 재동기화하는 방법.

배경: 느린 드라이브에 몇 테라바이트의 데이터가 있는데 이를 빠른 드라이브에 동기화해야 합니다. 이제 모든 데이터를 한 번에 동기화하는 것을 건너뛰고 가장 최근의 데이터만 동기화하고 싶습니다.

rsync만 사용하여 이 작업을 수행할 수 있습니까, 아니면 rsync와 함께 find를 사용해야 합니까?

답변1

rsync항상 소스 파일을 정렬하면 대상의 파일 목록을 비교하여 삭제된 파일, 추가된 새 파일 및 업데이트된 파일을 찾는 것이 더 쉬워집니다.

rsync극단적인 경우에는 단일 소스 파일을 사용하여 최신 파일을 찾아 여러 번 실행할 수도 있습니다.

동기화할 디렉터리를 선택하는 방법을 결정해야 합니다. 디렉터리 타임스탬프만 보면 업데이트된 해당 디렉터리의 파일은 물론 그 안에 있는 하위 디렉터리와 파일도 놓칠 수 있습니다.

가장 최근 파일만 동기화하고 소스에서 삭제된 파일을 대상에서 삭제하는 것에 대해 걱정하지 않으려면 다음과 같은 방법을 사용할 수 있습니다.

find topdir -mtime -7 -type f -print0 > /tmp/list-of-files
rsync -ptgo --files-from=/tmp/list-of-files --from0 ./ destinationdir/

먼저 7일 미만의 파일 목록을 작성하고 이를 null로 끝나는 임시 파일에 저장합니다. 그래야 공백과 줄 바꿈이 포함된 파일 이름이 계속 올바르게 작동합니다. 이 목록을 넣을 안전한 장소를 찾아야 할 수도 있습니다. /tmp특히 위에서 언급한 고정 이름을 넣으면 보안 문제가 발생할 수 있기 때문입니다.

rsync다음 으로 권한, 타임스탬프, 그룹 및 사용자 설정을 유지하면서 이러한 파일을 전송하도록 지시합니다 .

관련 정보