Ich habe eine Datei, die gelöscht wurde, aber noch von einem Programm geöffnet ist. Ich habe die Inode-Nummer mit lsof gefunden. Wie kann ich eine feste Verbindung zu dieser Inode herstellen?
14
Sie können keinen Link dazu erstellen, aber Sie können ihn zurückholen. Lass uns ein Experiment machen:
$ echo blurfl >myfile.txt
$ tail -f myfile.txt &
$ rm myfile.txt
myfile.txt ist jetzt weg, aber die Inode wird durch den Befehl tail am Leben erhalten. Um Ihre Datei zurückzugewinnen, müssen Sie zunächst die PID des Prozesses ermitteln, bei dem der Inode erhalten bleibt:
$ ps auxw | grep tail
sunny 409 0.0 0.0 8532 824 pts/5 S 18:07 0:00 tail -f myfile.txt
Die PID lautet 409. chdir to / proc / 409 / fd / und listet den Inhalt auf:
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)
Die Verzeichnisse / proc / [PID] / fd / enthalten symbolische Links zu Dateideskriptoren aller Dateien, die der Prozess verwendet. In diesem Fall zeigt der Symlink "3" auf die gelöschte Datei. Um die Datei wiederherzustellen, kopieren Sie den Inhalt in eine neue Datei:
$ cat 3 >/home/mydir/saved_file.txt
um die ganze datei zu bekommen wenn sie noch geschrieben ist zu versuchen
tail -c +1 -f
von: /unix/25527/how-to-follow-a-la-tail-fa-binary-file-from-the-beginning
(übrigens: ln von der FD auf / proc funktioniert nicht, nur versucht, dass)
quelle
Es gibt keine tragbare Möglichkeit, dies unter Linux zu tun. Der beste Weg wäre wahrscheinlich, alle Aktivitäten auf dem Dateisystem einzustellen, das Programm zu beenden, das die Datei geöffnet hält, das Dateisystem abzuhängen und es mit einem Dateisystem-Debugger erneut an ein Verzeichnis anzuhängen. Wenn Sie das Dateisystem über NFS exportieren lassen, können Sie in einigen Versionen von NFS möglicherweise die Dateidaten über NFS hinweg lesen.
quelle