CLI: 파일 수정 시간 백업 및 복원
2954 단어 devopstutoriallinuxprogramming
find
및 touch
명령의 간단한 조합을 사용했습니다.다음은 이 접근법의 두 가지 버전입니다. 하나는
stat
명령이 있고 다른 하나는 find
및 touch
의 조합입니다.첫 번째 버전(통계)
find . -type f -exec stat -c 'touch -d "%y" "%n"' {} \; > restore_mtimes
설명:
find
명령을 사용하여 현재 디렉토리( .
)에서 시작하여 모든 하위 디렉토리의 모든 파일(-type f)을 재귀적으로 반복합니다. stat ...
명령(문자열{}
이 현재 파일 이름으로 대체됨)stat
명령(-c 플래그)의 형식화된 출력을 사용하여 복원 스크립트의 일부로 touch -d "%y" "%n"
행을 생성합니다("%y"는 수정 시간, "%n"은 파일 이름). . find
명령의 전체 출력을 restore_mtimes
파일결과
restore_mtimes
파일은 다음과 같습니다.touch -d "2022-09-26 15:55:10.127898032 +0200" "./f2"
touch -d "2022-09-26 15:55:11.651909078 +0200" "./f3"
touch -d "2022-09-26 15:55:06.751873534 +0200" "./f1"
이 파일을 실행하여 원래 수정 시간을 복원할 수 있습니다(
chmod +x restore_mtimes
로 실행 가능하게 만들거나 . restore_mtimes
로 직접 소싱하여).두 번째 버전(찾기 및 터치)
파일 수정 시간만 필요하므로 불필요한
stat
명령 호출을 제거하고 find
명령에서 제공하는 수정 시간을 사용하여 최적화할 수 있습니다.find . -type f -printf 'touch -d "%t" "%p"\n' > restore_mtimes
stat -c
와 달리 끝에 개행 문자를 명시적으로 추가해야 합니다find에 의해 반환된 시간 형식은 약간 다릅니다(그러나
touch
에 의해 올바르게 구문 분석되어야 합니다).touch -d "Mon Sep 26 15:55:10.1278980320 2022" "./f2"
touch -d "Mon Sep 26 15:55:11.6519090780 2022" "./f3"
touch -d "Mon Sep 26 15:55:06.7518735340 2022" "./f1"
대안 및 고려해야 할 추가 사항:
VCS 커밋 시간
파일 수정 시간 백업에 대한 한 가지 대안은 버전 관리 시스템에서 마지막 커밋 시간을 재사용하는 것입니다(예: restoring file mtimes with git ).
--no-create 터치
일부 파일이 삭제될 수 있는 트리에 수정 시간을 복원하려는 경우
--no-create
플래그를 추가하는 것이 유용할 수 있습니다(touch
가 새 파일을 만들지 않도록 방지함).참고: 이것은 BetterWays.dev wiki 의 위키 페이지 스냅샷입니다. 더 나은 형식의 최신 버전은 betterways.dev/cli-backing-up-and-restoring-file-modification-times 에서 찾을 수 있습니다.
Reference
이 문제에 관하여(CLI: 파일 수정 시간 백업 및 복원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/betterways/cli-backing-up-and-restoring-file-modification-times-2dn9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)