janela deslizante de JPGs de milhares de arquivos

1

Minha máquina tem uma câmera acoplada que pode levar milhares de jpgs por dia. Estou procurando uma maneira de visualizar remotamente os últimos 30 a 60 minutos de imagens por meio de um site de armazenamento na nuvem, como box.com .

Pensei que copiar os últimos 5 minutos de arquivos para uma unidade remota montada (davfs2) a cada minuto e depois excluir os arquivos a cada 10 minutos com mais de uma hora seria uma boa solução; mas causou grandes problemas! Isso fez com que minha máquina não conseguisse se conectar via SSH; exigindo assim que eu o desligue.

Agora, mesmo se eu tentar excluir os arquivos, eles ainda serão copiados novamente para a unidade montada. Eu tive que desmontar a unidade, mas não consegui limpar o cache davfs2.

Existe um problema fundamental na minha abordagem?

Eu coloquei isso no meu crontab:

*/1 * * * * sudo find /mnt/ -type f -cmin -5 -exec cp -pn '{}' /home/pi/box/street_pictures/ \;
*/10 * * * *  sudo find /home/pi/box/street_pictures -cmin +60 -type f -exec rm '{}' \;

/nmt é a pasta com milhares de imagens. /home/pi/box/street_pictures é minha unidade montada.

    
por reggie 18.08.2014 / 11:51

1 resposta

1

Por que sudo ? Se ele for executado como root, coloque-o no root crontab?

A verificação de um diretório (remoto) com milhares de arquivos pode levar muito tempo. Se demorar mais de um minuto, você poderá ter várias tarefas agendadas em execução simultaneamente, lutando entre si por recursos e muitos sistemas de arquivos remotos não conseguirão manipular bem os acessos simultâneos.

Para evitar tarefas agendadas simultâneas, você pode usar algum tipo de mecanismo de bloqueio ou, como ele será executado sem interrupções, você poderá colocá-lo em um script de serviço:

while [ 1 ]
do
    sleep 60 &
    cp jpg stuff
    wait # for sleep in case 60 seconds have not yet passed
done

Talvez você possa renomear os arquivos já copiados para um subdiretório ignorado?

-exec {} \; também não é muito eficiente (inicia um novo processo cp para cada arquivo). Experimente -exec cp --target-directory=/home/pi/... {} + , se os seus programas suportarem essa opção.

Se os nomes dos arquivos forem previsíveis (contêm a data ou o número de incremento), pode ser mais eficiente confiar neles do que no registro de data e hora, para evitar% desnecessárias / demoradas de propriedades do arquivo.

    
por 18.08.2014 / 12:32

Tags