특정 마지막 수정 날짜가 있는 파일을 아카이브에 있는 파일(또는 날짜)로 교체합니다.

특정 마지막 수정 날짜가 있는 파일을 아카이브에 있는 파일(또는 날짜)로 교체합니다.

내 하드 드라이브의 용량이 거의 다 찼습니다(대부분 /home). 나는 더 큰 새 드라이브를 설치하고 /home거기에 복사한 후 계속해서 생활했습니다.

2013년 5월 17일입니다. 모든 것을 복사할 때 보관 플래그를 잊어버렸기 때문에 그 날짜가 2013년 5월 17일이라는 것을 알고 있습니다. 따라서 그 이후로 업데이트되지 않은 서버의 모든 파일 날짜는 2013년 5월 17일입니다.

마지막으로 수정된 날짜가 정확한 원본 /home디렉터리( )가 아직 남아 있습니다./oldhome

/home2013년 5월 17일 날짜의 모든 파일을 해당 원본 파일 /oldhome(올바른 날짜는 그대로 유지) 로 바꾸는 스크립트를 작성하려면 시작점이 필요합니다 . 해당 날짜에 존재했던 일부 파일이 이후에 업데이트되었기 때문에 2013년 5월 17일의 파일만 교체하고 싶고 해당 파일의 업데이트된 버전을 유지하고 싶습니다.

파일 개수는 약 /oldhome63K 입니다.

어디서부터 시작해야 할지 고민 중이신가요?

편집하다

좋아요 아래 Theophrastus의 의견(감사합니다)을 바탕으로 다음과 같이 시작할 수 있습니다.

...안에서부터 /home: find -type f -newermt 2013-5-17 ! -newermt 2013-5-18 -print0 | xargs -I % -0 rsync -avzI --dry-run /oldhome% /home%

...그럴 수도 있을 것 같아요거의거기. 출력에는 findrsync 명령의 경로를 나누는 선행 마침표가 있습니다( /oldhome./directory/filename /home./directory/filename.ext모든 것이 연결되었을 때 얻었습니다). find선행 마침표를 생략하기 위해 어떤 방식으로든 명령문을 다시 작성할 수 있습니까? 목표는 /home5/ 가 있는 경로를 식별하는 것입니다. 2013년 5월 17일 이후 날짜의 17/2013 파일을 삭제하고 해당 파일을 원본 사본으로 교체하세요 . 2013년 5월 17일 이후 날짜의 파일은 /oldhome없습니다 ./oldhome

관련 정보