Verfolgen Sie Dateiänderungen auf einem gemeinsam genutzten Hosting-Konto

Verfolgen Sie Dateiänderungen auf einem gemeinsam genutzten Hosting-Konto

Daher behalte ich gerne den Überblick über hinzugefügte, aber auch bearbeitete Dateien.

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]

Das macht genau das, was ich brauche, aber ich muss hinzufügen, was sich geändert hat (E bearbeitet N neu D gelöscht) oder so etwas in der Art.

Dies wurde nun schon oft gefragt und die Antwort ist immer die gleiche: fswatch inotify auditd oder ein anderes Paket. Dies ist keine Option, da es sich um einen gemeinsam genutzten CPanel-Hosting-Server handelt und ich keinen Zugriff darauf habe.

Ich suche also nach der einfachsten oder einer möglichst nahekommenden Möglichkeit, dies zu tun.

Git ist verfügbar, aber soweit ich weiß, müssen Sie ein Repository-Commit für Änderungen usw. durchführen, es durchsucht keinen Ordner danach. Außerdem muss es skriptfähig sein

Kurz gesagt, Sie brauchen nur ein möglichst einfaches Skript, um die Änderungen täglich per E-Mail zu versenden.

Antwort1

Sie fragen buchstäblich nach einem Versionskontrollsystem wie Git.

Sie könnten Ihr eigenes System einrichten, indem Sie einen Cronjob erstellen, der alle Dateien in ein „prev“-Verzeichnis kopiert und Ihnen eine E-Mail schickt diff -r, aber das ist etwas, was ein VCS bereits effizienter und normalerweise mit weniger Aufwand erledigt, also können Sie das auch gleich verwenden.

Git ist verfügbar, aber soweit ich weiß, müssen Sie ein Repository-Commit mit Änderungen usw. durchführen. Es durchsucht keinen Ordner danach.

Wenn Sie es anfordern, tut es das. Das ist buchstäblich eine der Kernfunktionen jedes Versionskontrollsystems: Es teilt Ihnen mit, was sich zwischen Commits geändert hat, und auch, was sich seit dem letzten Commit geändert hat (d. h. was noch nicht committet wurde).

Wenn Sie also ein Repository in public_html haben, müssen Sie nur git statusoder ausführen git diff, um die Änderungen anzuzeigen. Insbesondere --name-statuswürde Ihnen eine Liste der hinzugefügten/geänderten/gelöschten Dateien angezeigt, wie Sie es wünschen. Dasselbe gilt für Befehle, die Änderungen zwischen Commits anzeigen.

Außerdem muss es skriptfähig sein

Jedes Versionskontrollsystem ist skriptfähig. Insbesondere Git ist so skriptfähig, dass viele seiner benutzerorientierten Befehle früher (und manchmal immer noch) nur Shell-Skripte für Low-Level-Befehle waren.

Die meisten anderen Versionskontrollsysteme sind ebenfalls skriptfähigmindestensbis zu dem Punkt, an dem ein Commit durchgeführt wird und Ihnen eine Änderungszusammenfassung angezeigt wird (die von Ihnen angeforderte Add/Mod/Del-Ausgabe ist häufig tatsächlich die Standardausgabe von z. B. a hg statusoder svn status).

Ihr Cronjob wäre im Wesentlichen:

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

verwandte Informationen