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