отслеживать изменения файлов на общем хостинге

отслеживать изменения файлов на общем хостинге

Поэтому мне нравится отслеживать не только добавленные, но и отредактированные файлы.

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.

Вы можете создать свой собственный, создав cronjob, который копирует все файлы в каталог «prev» и отправляет вам по почте diff -r, но это то, что VCS уже делает более эффективно и обычно с меньшими усилиями, так что вы можете использовать его.

git доступен, но насколько я знаю, вам нужно сделать репозиторий, зафиксировать изменения и т. д., он не сканирует папку на их наличие.

Он делает это, если вы его об этом попросите. Это буквально одна из основных функций любой системы контроля версий: сообщать вам, что изменилось между коммитами, а также сообщать вам, что изменилось с момента последнего коммита (т. е. что еще не было коммита).

Так что если у вас есть репозиторий в public_html, вы просто делаете git statusили git diff, чтобы увидеть изменения. В частности, --name-statusпокажет вам список A(dded)/M(odified)/D(eleted) файлов, как вы и просите. То же самое можно применить к командам, которые показывают изменения между коммитами.

Также он должен быть скриптовым.

Каждая система контроля версий может быть написана на скриптах. Git, в частности, настолько написан на скриптах, что многие из его команд, с которыми сталкивается пользователь, раньше были (а иногда и сейчас остаются) просто скриптами оболочки вокруг низкоуровневых команд.

Большинство других систем контроля версий также поддерживают скрипты.по меньшей меревплоть до создания коммита и показа вам сводки изменений (выходные данные Add/Mod/Del, которые вы запрашиваете, на самом деле часто являются выходными данными по умолчанию, например, 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

Связанный контент