只要有一个打开的文件描述符指向一个文件,我就可以cp
像这样把它带回来:
# Open for reading
exec 3< file
# Delete
rm file
# Bring it back
cp /proc/self/fd/3 file
这个解决方案对于小文件来说还可以,但是对于较大的文件(例如> 5GiB)来说确实很慢。所以我想知道有没有办法把它带回来而不复制内容?我的意思是,除非描述符关闭,否则数据不会被触及,那么为什么不能将文件名链接到数据所在的内存区域呢?
请赐教我这一点。黑客式的命令行解决方案、依赖于平台/文件系统的 C API 等。一切都受欢迎;我只是想知道如果可能的话以某种方式在某个地方,并且如果不, 我想知道为什么。
lsof
谷歌搜索根本没有帮助,我所能找到的只是关于如何使用和恢复文件的复制文章cp
。