Como redirecionar a saída do arquivo para um diretório diferente?

2

Eu tenho um programa que gera regularmente arquivos para um diretório, digamos /a/b . Eu não consigo alterar onde esses arquivos são enviados. Mas para eu usá-los, primeiro preciso movê-los para, digamos, /c/d , um diretório já existente . Estou ficando cansado de mover regularmente o conteúdo do arquivo, então há alguma maneira de redirecionar tudo escrito nesse diretório para outro? Eu já tentei ln -s , mas com meu conhecimento limitado do comando de vinculação, não consegui realizar nada. Alterar qualquer código do programa não é possível. Obrigado pela ajuda.

    
por Cameron Cuncannan 10.03.2016 / 02:10

2 respostas

3

Com exceção de poder excluir o diretório / a / b, seu comando ln -s não fornecerá nada.

mas se você puder encontrar alguns segundos que nada está gravando neste diretório /a/b , você pode fazer isso:

cd /a
rm -r b   # make sure you have a backup of the contents of this directory 
ln -s /c/d b

agora, qualquer aplicativo que escrever em /a/b será direcionado para gravar esses arquivos em /c/d , desde que tenham direitos de gravação.

    
por 10.03.2016 / 02:31
0

Aqui:

while :; do cp /a/b/* /c/d/; sleep 60; done

Copia todo o conteúdo de / a / b / para / c / d / a cada 60 segundos.

Tem uma desvantagem: se os arquivos são grandes (mais do que alguns GB?), a cópia pode demorar um pouco. Se isso for um problema, comente e eu implementarei algo otimizado para arquivos grandes (com tail -f ) que também redirecionará o conteúdo em tempo real

    
por 23.07.2016 / 22:24