그래서 나는 추가된 파일뿐만 아니라 편집된 파일도 추적하고 싶습니다.
find /home/user/public_html -type f -mtime -6 ! -path '*/exclude1*' ! -path '*/exclude2/etc*' -exec ls -ls {} \; | mail -e -s "File Monitor Report" [email protected]
이것은 정확히 내가 필요한 것을 수행하지만 변경된 내용(E 편집 N 새 D 삭제) 또는 이와 유사한 것을 추가하려면 필요합니다.
이제 이것은 오랜 시간 동안 질문을 받았고 대답은 항상 동일합니다: fswatch inotify auditd 또는 다른 패키지. 이것은 cpanel 공유 호스팅 서버이기 때문에 해당 액세스 권한이 없기 때문에 옵션이 아닙니다.
그래서 저는 이 일을 하는 가장 간단한 방법이나 그에 가까운 방법을 찾고 있습니다.
git을 사용할 수 있지만 저장소 커밋 변경 사항 등을 만들어야 한다는 것을 알고 있습니다. 폴더를 검색하지 않습니다. 또한 스크립트가 가능해야 합니다.
간단히 말해서 매일 변경 사항을 메일로 보내려면 가능한 간단한 스크립트가 필요합니다.
답변1
말 그대로 Git과 같은 버전 제어 시스템을 요구하고 있는 것입니다.
모든 파일을 "prev" 디렉터리에 복사하고 를 메일로 보내는 cronjob을 만들어 직접 롤업할 수도 있지만 diff -r
이는 실제로 VCS가 이미 더 효율적이고 일반적으로 노력 없이 수행하는 작업이므로 이를 사용하는 것이 좋습니다.
git을 사용할 수 있지만 저장소 커밋 변경 사항 등을 만들어야 한다는 것을 알고 있습니다. 폴더를 검색하지 않습니다.
요청하면 그렇습니다. 이는 문자 그대로 모든 버전 제어 시스템의 핵심 기능 중 하나입니다. 커밋 사이에 변경된 내용을 알려주는 것뿐만 아니라 마지막 커밋 이후 변경된 내용(즉, 아직 커밋되지 않은 내용)도 알려줍니다.
따라서 public_html에 저장소가 있는 경우 변경 사항을 보려면 git status
또는 을 수행하면 됩니다. git diff
특히, --name-status
요청한 대로 A(추가)/M(수정)/D(삭제) 파일 목록을 표시합니다. 커밋 간의 변경 사항을 표시하는 명령에도 동일하게 적용될 수 있습니다.
또한 스크립트가 가능해야 합니다.
모든 버전 제어 시스템은 스크립트가 가능합니다. 특히 Git은 스크립트 기능이 뛰어나 사용자가 사용하는 명령 중 다수가 하위 수준 명령에 대한 쉘 스크립트였습니다(때때로 지금도 그렇습니다).
대부분의 다른 버전 제어 시스템도 스크립트 가능적어도커밋을 하고 변경 요약을 표시하는 지점까지(요구하는 Add/Mod/Del 출력은 실제로 a hg status
또는 의 기본 출력인 경우가 많습니다 svn status
).
cronjob은 기본적으로 다음과 같습니다.
cd ~user/public_html
git add --all
git commit -m "Daily snapshot"
# Output the changes for cronmail
git show --name-status
# ...and output the whole diff as well.
git show --stat