
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:
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.
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.