Montar compartilhamento de rede e mesclar com arquivos existentes no ponto de montagem

1

Eu tenho um programa rodando em um Raspberry Pi 3 (Rasbian Jesse) que descarta arquivos em um diretório chamado /mount-point . Na inicialização, estou montando um compartilhamento do Windows chamado /incoming to /mount-point . Existe um programa do Windows que está processando esses arquivos conforme eles são descartados no compartilhamento.

mount -t cifs -o username=<share user>,password=<share password> //<Win-IP>/c/incoming /home/pi/mount-point

O problema ocorre se a rede ficar inativa. Se a rede estiver inativa, o programa linux continua a soltar arquivos no diretório /mount-point . Quando a rede voltar, o compartilhamento do Windows será remontado e todos os arquivos atualmente em /mount-point serão montados e desaparecerão.

Existe uma maneira de "mesclar a montagem" do compartilhamento do Windows para que os arquivos atualmente em /mount-point não fiquem ocultos e apareçam em /incoming no Windows?

    
por S May 17.08.2017 / 21:02

2 respostas

4

Não há uma maneira de mesclar diretamente o conteúdo de um ponto de montagem como este. A opção mais próxima é usar uma união / montagem excessiva, mas elas não funcionam de forma confiável com sistemas de arquivos em rede, e o que você teria que fazer para que funcionasse nesse caso não é muito intuitivo.

Idealmente, você provavelmente deveria:

  1. Ensine seu programa a detectar se o compartilhamento está montado ou não e, em seguida, faça o cache dos arquivos se o compartilhamento não estiver montado e, em seguida, grave-os quando estiver.
  2. Faça com que seu programa grave dados em um local separado e use uma tarefa periódica (usando um cronjob ou timer do systemd) para copiar os arquivos no compartilhamento, se ele estiver montado.

Ambos os casos são mais robustos do que um conjunto de união, e ambos são muito mais agnósticos da configuração de armazenamento subjacente (o que é bom para manutenção).

    
por 17.08.2017 / 21:13
0

É possível (ainda que um pouco complicado) montar as coisas de uma maneira, então o Linux vê arquivos locais e remotos no mesmo diretório. No entanto, o seu Windows só verá arquivos que existem no lado do Windows.

Se você disser ao seu programa para mover arquivos para /mount-point/some-dir/ , o que não existe quando o compartilhamento não estiver montado, ele pode ou não ser inteligente o suficiente para tentar mais tarde. Se for inteligente o suficiente, essa pode ser a solução mais fácil.

Se não for inteligente o suficiente, deixe-o mover os arquivos para outro diretório e executar uma tarefa cron para mover os arquivos para o compartilhamento. Torne isso inteligente o suficiente. mv simples será anulado se o diretório de destino não existir.

    
por 17.08.2017 / 21:37