我遇到一种情况,我的同事覆盖了我已更改的 PHP 文件,是否可以使用命令行将文件回滚到以前的工作版本。没有可用的 svn 存储库,也没有任何备份。
答案1
我很遗憾地说,如果您没有进行任何备份,那么您几乎肯定是 SOL,尤其是在命令行中。
取消链接(删除)文件有时可以使数据恢复,只要没有其他东西获取该特定 inode;编辑文件会覆盖数据。
如果您的同事仍然打开他正在使用的编辑器并且其撤消缓冲区足够长,那么可能是一种恢复原来的方式,但除此之外,我担心你会沉没。对不起。
答案2
假设您使用的是 ext3,如果替换文件是作为另一个 inode 创建的(而不是覆盖现有文件),则可以通过debugfs
在未挂载的文件系统上使用并查找原始文件的 inode 来恢复它。不幸的是,如果你的同事覆盖了该文件,而不是将其移到一边然后删除,它就会消失。我建议debugfs
使用极度谨慎,因为你可能会严重搞乱文件系统。它的用途只是为了最后的努力。
答案3
通常您会创建一个以 .tmp 开头的 tmp 文件~filename.extension
。你可以从中恢复过来。