Сохранить видео, которое играет в VLC

Странный вопрос, но вот контекст. Я играл видео в VLC на Ubuntu 16.04. Я случайно удалил видео, пока все еще проигрывал его. Я все еще могу перейти в любую точку видеопотока в VLC и воспроизвести его, но физический файл удален с диска.

Есть ли способ восстановить этот кеш? У меня все еще открыт VLC.

Редактировать по комментариям:

lsof | grep vlc | grep dvgrab

возвращается

vlc       2671           peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2674      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2676      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2677      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2686      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2689      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2692      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2694      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2695      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2696      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2697      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2698      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2699      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)
vlc       2671 2700      peter   31r      REG               0,40 1048560000         45 /mnt/server/Vid projects/2017/01 January/22 Home/dvgrab-003.dv (deleted)

1 ответ

Решение

Как @ridgy так услужливо указал в комментариях:

Пока файл используется, он не будет действительно удален, а будет удален из каталога. Индод файла все еще используется. Вы можете найти номер инода, выполнив lsof | grep vlc; это покажет файл без имени и сообщение (удалено) вместо этого. Номер инода - это номер перед этим. Затем вы можете связать файл с каталогом с помощью ln <inode#> <filename>,

И позже:

Индекс 45 (число перед путем к файлу). Но я только что понял, что ln не работает на inode (не смог заставить его работать..). Но так как вы видите, что файл используется vlc, filedescriptor # 31 (см. 31r перед REG), вы можете сделать cat /proc/2671/fd/31 > file_to_save, который скопирует содержимое в новый файл. 2671 - это процесс № vlc (число после vlc).

И, действительно, работает

 cat /proc/2671/fd/31 > file_to_save

схватил файл и сохранил его на моем жестком диске. Спасибо!

Другие вопросы по тегам