İnode numarasını bulmak için lsof kullanın ve sabit bir bağlantı oluşturmak için debugfs kullanın. Örneğin:
# lsof -p 12345 | grep /var/log/messages
syslogd 12345 root 3w REG 8,3 3000 987654 /var/log/messages (deleted)
# mount | grep var
/dev/sda2 on /var type ext3 (rw)
# debugfs -w /dev/sda2
debugfs: cd log
debugfs: ln <987654> tmp
debugfs: mi tmp
Mode [0100600]
User ID [0]
Group ID [0]
Size [3181271]
Creation time [1375916400]
Modification time [1375916322]
Access time [1375939901]
Deletion time [9601027] 0
Link count [0] 1
Block count [6232]
File flags [0x0]
...snip...
debugfs: q
# mv /var/log/tmp /var/log/messages
# ls -al /var/log/messages
-rw------- 0 root root 3301 Aug 8 10:10 /var/log/messages
Şikayet etmeden önce, şu anda elinizde silinmiş bir dosya olmadığından yukarıdaki transkripti taklit ettim ;-)
kullanırım mi
Silme süresini ve bağlantı sayısını anlamlı değerlere (sırasıyla 0 ve 1) sıfırlamak için , ancak düzgün çalışmıyor - bağlantı sayısının sıfırda kaldığını görebilirsiniz ls
. Bence çekirdek inode verilerini önbelleğe alıyor olabilir. Güvenli tarafta olmak için, hata ayıklamalarını kullandıktan sonra muhtemelen ilk fırsatta fsck yapmalısınız.
Deneyimlerime göre, bağlantıyı geçici bir dosya adı kullanarak oluşturmalı ve ardından uygun ada yeniden adlandırmalısınız. Doğrudan orijinal dosya adına bağlanması dizin bozulmasına neden oluyor gibi görünüyor. YMMV!
readlink /proc/13381/fd/3
-> "/ home / vi / important_file (silindi)" ve/home/vi/important_file\ \(deleted\)
belli ki mevcut değil.