GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ejecutar un comando cuando se actualizan los contenidos de un directorio?

Hay un directorio A cuyos contenidos son cambiados con frecuencia por otras personas.

He creado un directorio personal B donde guardo todos los archivos que han estado en A .

Actualmente, ocasionalmente ejecuto rsync para hacer una copia de seguridad de los archivos desde A a B . Sin embargo, temo la posibilidad de que se agreguen algunos archivos en A y luego eliminado de A antes de que tenga la oportunidad de copiarlos en B .

¿Cuál es la mejor manera de evitar que esto ocurra? Idealmente, me gustaría que mi script de copia de seguridad actual se ejecute cada vez que el contenido de A cambiarse.

Respuesta aceptada:

Si tiene inotify-tools instalado, puede usar inotifywait para activar una acción si se escribe en un archivo o directorio:

#!/bin/sh
dir1=/path/to/A/
while inotifywait -qqre modify "$dir1"; do
    /run/backup/to/B 
done

Donde -qq el interruptor es completamente silencioso, -r es recursivo (si es necesario) y -e es el evento a monitorear, en este caso modify . De man inotifywait :

modificar
Se escribió un archivo vigilado o un archivo dentro de un directorio vigilado.


Linux
  1. ¿Cómo ejecutamos un comando almacenado en una variable?

  2. Cómo obtener el tamaño del directorio en Linux

  3. Cómo excluir un directorio en find. dominio

  4. ¿Cómo puedo excluir un directorio del comando ls?

  5. ¿Cómo obtengo un directorio completo en sftp?

Cómo obtener el tamaño de un directorio en Linux

Cómo eliminar un directorio en Linux

Cómo obtener el tamaño de un directorio en Linux

Cómo ejecutar comandos de Linux en segundo plano

Cómo ejecutar todos los scripts en un directorio en Linux

Cómo contar archivos en el directorio en Linux