Streaming compara o conteúdo em dois diretórios [closed]

1

Como fazer um streaming (em um comando ou script) de 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 simultaneamente processá-los com um manipulador:

diff -> copy -> exec some.sh

    
por Tatiana 21.11.2017 / 21:02

2 respostas

0

Listar o conteúdo de dir1 para file1.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 o arquivo2.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
    
por 22.11.2017 / 07:22
-2

Você pode fazer isso por dois métodos:

  1. Usando o link de software

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

    ln -s  source destination
    

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

  2. Usando o rsync

    rsync -avzh sourcepath destinationpath
    

    Este comando sincronizará automaticamente a origem e o destino. Programe um crontab por 1 minuto para este comando, para que ele seja continuamente verificado e atualizado.

por 22.11.2017 / 03:50