Por eso me gusta realizar un seguimiento de los archivos agregados pero también de los archivos editados.
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]
Esto hace exactamente lo que necesito, pero lo necesito para agregar lo que cambió (E editado N nuevo D eliminado) o algo como esto.
Esto se ha preguntado muchas veces y la respuesta es siempre la misma: fswatch inotify auditd o algún otro paquete. Esta no es una opción debido a que es un servidor de alojamiento compartido de cpanel y no tengo ese acceso.
Así que estoy buscando la forma más sencilla de hacer esto o aquello que se acerque a ello.
git está disponible, pero por lo menos sé que necesitas realizar cambios de confirmación en el repositorio, etc., no escanea una carpeta en busca de ellos. También debe ser programable.
En resumen, solo necesito un script lo más simple posible para enviar los cambios por correo diariamente.
Respuesta1
Literalmente estás pidiendo un sistema de control de versiones, como Git.
Podrías crear el tuyo propio haciendo un cronjob que copie todos los archivos a un directorio "anterior" y te envíe un correo electrónico diff -r
, pero eso es realmente algo que un VCS ya hace de manera más eficiente y generalmente sin esfuerzo, por lo que también puedes usarlo.
git está disponible, pero por lo menos sé que necesitas realizar cambios de confirmación en el repositorio, etc., no escanea una carpeta en busca de ellos.
Lo hace si se lo pides. Esa es literalmente una de las características principales de cualquier sistema de control de versiones: decirle qué cambió entre confirmaciones, así como qué cambió desde la última confirmación (es decir, qué no se ha confirmado aún).
Entonces, si tienes un repositorio en public_html, simplemente hazlo git status
o git diff
para ver los cambios. En particular, --name-status
le mostraría una lista de archivos A (agregados)/M (modificados)/D (eliminados) como lo está pidiendo. Lo mismo se puede aplicar a los comandos que muestran cambios entre confirmaciones.
También debe ser programable.
Cada sistema de control de versiones es programable. Git en particular es tan programable que muchos de sus comandos orientados al usuario solían ser (y a veces siguen siendo) solo scripts de shell en torno a comandos de bajo nivel.
La mayoría de los demás sistemas de control de versiones también son programables.al menoshasta el punto de realizar una confirmación y mostrarle un resumen de cambios (la salida Agregar/Mod/Eliminar que está solicitando suele ser en realidad la salida predeterminada de, por ejemplo, a hg status
o svn status
).
Tu cronjob básicamente sería:
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