Streaming compara los contenidos en dos directorios

Streaming compara los contenidos en dos directorios

Cómo hacer de un streaming (en un comando o script) una tarea para:

  • comparar el contenido (archivos y carpetas) de los dos directorios dir1 y dir2
  • Si aparecen nuevos archivos en el directorio dir1, comience a copiarlos en dir2 y procéselos simultáneamente con un controlador:

diferencia -> copiar -> ejecutar some.sh

Respuesta1

Enumere el contenido de dir1 en file1.txt usando el siguiente comando

ls -ltr | awk '{print $9}'  > /var/tmp/file1.txt

file1.txt contiene este contenido

t1
1
l.sh
r.txt
l.py
l.txt
p.txt

Enumere el contenido de dir2 en file2.txt usando el siguiente comando

ls -ltr | awk '{print $9}' > /var/tmp/file2.txt
t1
1
l.sh
r.txt
l.py
l.txt

Ahora este comando encontrará el contenido que no está presente en el archivo 2.txt en comparación con el archivo 1.txt para copiarlo al directorio 2.

awk 'NR==FNR {a[$1];next}!($1 in a) {print $1}' file2.txt file1.txt |
awk '{print "cp -rvfp" " " "directory1path”$1 " " "directory2path"}' |
sh

Respuesta2

Puedes hacerlo mediante dos métodos:

  1. Usando enlace suave

    Utilice este comando para obtener otra copia del origen en la carpeta de destino

    ln -s  source destination
    

    pero en este caso, una vez que se elimina el archivo o directorio fuente, el enlace se romperá y no podrá acceder a él.

  2. Usando rsync

    rsync -avzh sourcepath destinationpath
    

    Este comando sincronizará automáticamente el origen y el destino. Programe un crontab durante 1 minuto para este comando para que verifique y actualice continuamente.

información relacionada