개발 및 라이브용 하위 폴더가 포함된 두 개의 동일한 폴더가 있습니다. 예를 들면 다음과 같습니다.
/development/subdirectory1
/development/subdirectory1/subsub1
/development/subdirectory2
/development/subdirectory2/subsub2
/development/subdirectory2/subsub2/subsubsub2
/live/subdirectory1
/live/subdirectory1/subsub1
/live/subdirectory2
/live/subdirectory2/subsub2
/live/subdirectory2/subsub2/subsubsub2
특정 개발 폴더 이후에 수행된 모든 최근 작업을 라이브 폴더에 동기화하고 싶습니다.
이를 위해 나는 사용하고 있습니다
find development/ -type f -newermt '2/2/2020 0:00:00' -exec rsync -avz {} live/ \;
그러나 파일이 개발 폴더의 하위 폴더에 있더라도 개발 중인 모든 파일이 활성 폴더의 루트에 복사됩니다. 하지만 내가 원하는 것은 대상의 정확한 하위 폴더에 있는 파일을 재동기화하는 것입니다.
그래서 기본적으로 내가 원하는 것은 "rsync -avz"를 실행하여 특정 날짜 이후에 파일을 업데이트하는 것입니다.
또한 솔루션을 찾기 위해 여러 솔루션을 시도했지만 찾을 수 없습니다. --files-from을 사용해 보세요. 이것에 대한 생각이 있나요?
답변1
복사하려는 파일 세트를 단일 rsync
.
find development/./ -type f -newermt '2/2/2020' |
rsync --dry-run -vtpR --files-from - . live/
.
find
대상에 보존할 소스 경로에서 표시된 경로의 시작 지점입니다. -z
로컬로 복사할 때 압축이 수행되지 않기 때문에 플래그를 생략했습니다 . --dry-run
원하는 대로 작동하고 있다는 것이 만족스러우면 삭제하세요.
여기서는 실제로 rsync
스마트한 작업이 수행되지 않습니다. tar
(또는 )을 사용할 수도 있습니다 pax
.
tar cf - -C development --newer-mtime='2020-02-02' . | tar xvf - -C live