J'ai un fichier qui a été supprimé, mais est toujours maintenu ouvert par un programme. J'ai trouvé le numéro d'inode en utilisant lsof. Comment puis-je créer un lien dur vers cet inode?
J'ai un fichier qui a été supprimé, mais est toujours maintenu ouvert par un programme. J'ai trouvé le numéro d'inode en utilisant lsof. Comment puis-je créer un lien dur vers cet inode?
Réponses:
Vous ne pouvez pas créer de lien vers celui-ci, mais vous pouvez le récupérer. Faisons une expérience:
$ echo blurfl >myfile.txt
$ tail -f myfile.txt &
$ rm myfile.txt
myfile.txt a maintenant disparu, mais l'inode est maintenu en vie par la commande tail. Pour récupérer votre fichier, trouvez d'abord le PID du processus gardant l'inode:
$ ps auxw | grep tail
sunny 409 0.0 0.0 8532 824 pts/5 S 18:07 0:00 tail -f myfile.txt
Le PID est 409. chdir vers / proc / 409 / fd / et listez le contenu:
dr-x------ 2 sunny sunny 0 2009-07-24 18:07:18 .
dr-xr-xr-x 7 sunny sunny 0 2009-07-24 18:07:17 ..
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 0 -> /dev/pts/5
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 1 -> /dev/pts/5
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:18 2 -> /dev/pts/5
lr-x------ 1 sunny sunny 64 2009-07-24 18:07:33 3 -> /home/sunny/tmp/myfile.txt (deleted)
Les répertoires / proc / [PID] / fd / contiennent des liens symboliques vers les descripteurs de fichiers de tous les fichiers utilisés par le processus. Dans ce cas, le lien symbolique "3" pointe vers le fichier supprimé. Donc, pour restaurer le fichier, copiez le contenu dans un nouveau fichier:
$ cat 3 >/home/mydir/saved_file.txt
pour obtenir le fichier entier s'il est toujours écrit pour essayer tail -c +1 -f
à partir de: /unix/25527/how-to-follow-a-la-tail-fa-binary-file-from-the-beginning
(btw: ln depuis le fd sur / proc ne fonctionne pas, juste essayé)
Il n'y a aucun moyen portable de le faire sous Linux. Le meilleur moyen serait probablement de faire cesser toute activité sur le système de fichiers, de tuer le programme qui maintient le fichier ouvert, de démonter le système de fichiers et d'utiliser un débogueur de système de fichiers pour le rattacher à un répertoire. Si vous avez le système de fichiers exporté via NFS, au moins certaines versions de NFS peuvent vous permettre de lire les données de fichier via NFS.