Copie os arquivos automaticamente para o destino assim que forem criados

4

Existe alguma maneira de copiar o arquivo no Unix assim que ele é criado? Eu tenho um local onde os arquivos serão criados em diferentes horários. Como posso copiar os arquivos automaticamente usando o shell script para algum outro local no Unix?

    
por M.Nehru 08.06.2015 / 12:07

2 respostas

4

inotifywait -e close_write --format "%f" --monitor . |
  while IFS= read -r line
  do
    #cp "$line" destination/ #this would not replicate directories
    tar cf - "$line" | tar -C destination/ xf - #this should replicate directories
  done

deve fazer o truque, a menos que o número de arquivos em seu diretório (estou usando . para o diretório atual) exceda o limite do seu sistema para inotify relógios (fs.inotify.max_user_watches, como coteyr menciona).

    
por 08.06.2015 / 12:41
0

Você não pode copiar arquivos no instante em que eles são criados com um script de shell sozinho. Três soluções que vêm à mente.

  1. rsync com cron - é simples, padrão e fácil. De vez em quando (uma vez por hora) você executa o rsync no diretório. Estruturas enormes podem ser sincronizadas em segundos, dependendo da quantidade de alterações.

  2. Gluster ou similar. Dependendo das necessidades.

  3. Use apenas um link simbólico.

por 08.06.2015 / 12:41