Solución 1:
GNU tar tiene una opción --newer-mtime, que requiere un argumento de fecha, que presumiblemente sería la última vez que hizo una copia de seguridad. Según la cantidad de trabajo que desea restaurar el sistema de archivos, esta podría ser la última copia de seguridad completa, en cuyo caso necesitaría restaurar el volcado completo y la última diaria, o podría hacerlo desde la última copia de seguridad incremental, en la que caso, necesitaría restaurar el volcado completo y cada volcado después de eso.
Esta opción se basa en la marca de tiempo de modificación en el archivo, por lo que si eso se ha cambiado explícitamente, existe la posibilidad de que su copia de seguridad lo pierda.
Solución 2:
La utilidad incron usa inotify para ejecutar comandos cuando ocurren eventos del sistema de archivos. El archivo de configuración es como un crontab, pero en lugar de horas especificas rutas y eventos.
El comando podría ser su secuencia de comandos de copia de seguridad (en cuyo caso, la copia de seguridad comenzará casi inmediatamente después de que se modificaron los archivos), o podría hacer que cree algún archivo y hacer que la secuencia de comandos de copia de seguridad verifique la existencia de ese archivo y luego lo elimine. Si el archivo existe, uno de los eventos ocurrió desde la última ejecución.
Solución 3:
Siempre puedes canalizar buscar salida de wc y obtener un número entero de archivos modificados:
find . -ctime 1 | wc -l
Aunque la respuesta de David requiere menos cambios de código :)
Solución 4:
Esta es una idea un poco descabellada, pero podrías jugar un poco con md5sum y ls.
Esta idea es solo mirar un md5sum de un archivo, y ese archivo es una lista de archivos del directorio que está viendo. Y mientras nada cambie, el md5sum es el mismo. Pero si se actualiza una marca de tiempo, md5sum cambiará y sabrá que necesita hacer un tar nuevo y enviarlo a su servidor ftp.
Podríamos empezar con algo como esto
ls -lR /path/to/dir/ | md5sum > file_list.txt.md5
Luego necesitaría agregar una comparación entre el antiguo md5 y el actual... etc etc
/Johan
Solución 5:
Las versiones recientes de GNU find tienen la acción "-quit", lo que hace que find detenga inmediatamente la búsqueda:
— Acción:-salir
Salga inmediatamente (con valor de retorno cero si no se han producido errores). Esto es diferente a '-prune' porque '-prune' solo se aplica al contenido de los directorios eliminados, mientras que '-quit' simplemente hace que find se detenga inmediatamente. No se dejarán en ejecución procesos secundarios, pero no se procesarán más archivos especificados en la línea de comandos. Por ejemplo, find /tmp/foo /tmp/bar -print -quit imprimirá solo '/tmp/foo'. Cualquier línea de comando que haya sido creada por '-exec ... +' o '-execdir ... +' se invoca antes de salir del programa.
Puede usar una expresión de búsqueda para buscar archivos que han cambiado y usar -quit para detenerse tan pronto como encuentre uno. Eso debería ser más rápido que encontrar continuando su escaneo.
-quit se agregó en fileutils V4.2.3