Streaming compara o conteúdo em dois diretórios

Streaming compara o conteúdo em dois diretórios

Como fazer de um streaming (em um comando ou script) uma tarefa para:

  • compare o conteúdo (arquivos e pastas) dos dois diretórios dir1 e dir2
  • se novos arquivos aparecerem no diretório dir1, comece a copiá-los para dir2 e processe-os simultaneamente com um manipulador:

diff -> copiar -> exec some.sh

Responder1

Liste o conteúdo de dir1 em arquivo1.txt usando o comando abaixo

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

file1.txt contém este conteúdo

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

Liste o conteúdo de dir2 para file2.txt usando o comando abaixo

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

Agora este comando encontrará o conteúdo que não está presente no arquivo2.txt quando comparado ao arquivo1.txt para copiar para o diretório 2

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

Responder2

Você pode fazer isso por dois métodos:

  1. Usando link virtual

    Use este comando para obter outra cópia da origem na pasta de destino

    ln -s  source destination
    

    mas, neste caso, quando o arquivo ou diretório de origem for excluído, o link será quebrado e você não poderá acessá-lo.

  2. Usando rsync

    rsync -avzh sourcepath destinationpath
    

    Este comando sincronizará automaticamente a origem e o destino. Agende um crontab por 1 minuto para este comando para que ele verifique e atualize continuamente.

informação relacionada