Buradaki diğer cevaplar muhtemelen işe yarayacak. Özellikle, sembolik bağlantı çözümü muhtemelen en kolay çözüm olacaktır. Bunu esas olarak bütünlük için yapıyorum.
Dosyayı içeren dosya sistemi aygıtları desteklemiyorsa (veya örneğin, seçenekle monte edilmişse), mknod
(veya cp -a
) içeren çözümler sorunlu hale gelir nodev
. Ve elbette, dosya sistemlerindeki sabit bağlantılar işe yaramaz.
Sabit bağlantılara veya yeni aygıt düğümleri oluşturmaya alternatif bir dosya veya dizini dosya sistemi ağacınızın bir bölümünden diğerine eklemenize izin veren bağlama bağları kullanmaktır. Yani, örneğin, çalıştırabilirsiniz:
mount -o bind /dev/null /path/to/log.txt
Bu çok sert bir bağlantı gibi davranır, ancak:
- Dosya sistemlerinde çalışabilir (çünkü sabit bağlantı gibi dosya sistemi düğümlerine dayanmaz)
- Salt okunur dosya sistemlerinde çalışır (çünkü aslında dosya sistemini değiştirmezsiniz)
Tam bir örnek için:
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
chmod -w log.txt
mısın?