As outras respostas aqui provavelmente funcionarão. Em particular, a solução de links simbólicos provavelmente será a solução mais fácil. Eu ofereço isso principalmente para ser completo.
As soluções que involam mknod
(ou cp -a
) tornam-se problemáticas se o sistema de arquivos que contém o arquivo não suporta dispositivos (por exemplo, foi montado com a opção nodev
, por exemplo). E, claro, links rígidos em sistemas de arquivos simplesmente não funcionarão.
Uma alternativa para links físicos ou criação de novos nós de dispositivos é usar montagens de ligação, que permitem montar um arquivo ou diretório de uma parte da árvore do sistema de arquivos em outra. Então, por exemplo, você pode executar:
mount -o bind /dev/null /path/to/log.txt
Isso funciona muito como um link físico, mas:
- Ele pode operar em sistemas de arquivos (porque não é baseado em inodes do sistema de arquivos como um link físico)
- Funciona em sistemas de arquivos somente leitura (porque você não está realmente modificando o sistema de arquivos)
Para um exemplo completo:
bash-4.3# ls -l /var/log/boot.log
-rw-r--r--. 1 root root 7436 Dec 19 10:00 /var/log/boot.log
bash-4.3# mount -o bind /dev/null /var/log/boot.log
bash-4.3# ls -l /var/log/boot.log
crw-rw-rw-. 1 root root 1, 3 Dec 19 09:58 /var/log/boot.log
bash-4.3# echo words words words > /var/log/boot.log
bash-4.3# ls -l /var/log/boot.log
crw-rw-rw-. 1 root root 1, 3 Dec 19 09:58 /var/log/boot.log