保存在 vlc 中播放的视频

ano*_*us2 6 video vlc data-recovery

奇怪的问题,但这是上下文。我在 Ubuntu 16.04 上用 VLC 播放视频。我在播放视频时不小心删除了视频。我仍然可以移动到 VLC 中视频流的任何点并播放它,但物理文件已从磁盘中删除。

有没有办法恢复这个缓存?我仍然打开 VLC。

根据评论编辑:

lsof | grep vlc | grep dvgrab
Run Code Online (Sandbox Code Playgroud)

返回

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)
Run Code Online (Sandbox Code Playgroud)

ano*_*us2 1

正如 @ridgy 在评论中如此有益地指出的那样:

只要该文件正在使用,它就不会被真正删除,而是从目录中删除。该文件的索引节点仍在使用中。您可以通过发出以下命令找到索引节点号lsof | grep vlc;这将显示一个没有名称的文件和消息(已删除)。索引节点号是其前面的数字。然后,您可以将文件重新链接到目录ln <inode#> <filename>

后来:

inode为45(文件路径前面的数字)。但我刚刚意识到 ln 不适用于索引节点(无法让它工作..)。但是当您看到该文件被 vlc 使用时,filedescriptor # 31(请参阅 REG 之前的 31r),您可以执行cat /proc/2671/fd/31 > file_to_save,这会将内容复制到新文件中。2671是vlc的进程号(vlc后面的数字)。

确实,跑步

 cat /proc/2671/fd/31 > file_to_save
Run Code Online (Sandbox Code Playgroud)

抓取该文件并将其存储到我的硬盘上。谢谢!