0

我一直在研究 Python 中的算法,我正在使用 Vim 来编辑这个文件。我打开它,做了一个保存,它会出现一个错误,就像它偶尔会做的那样:

“警告:您的文件无法保存!所有更改都将丢失!无法写入文件!”

由于这种情况偶尔会发生,我做了我通常做的事情,然后我点击了:q!退出而不写任何更改。没有伤害,没有犯规。当我查看我的文件时,一切都被删除了!一切!

我在办公室里闲聊,似乎 nfs 挂载已满,所以我无法保存任何内容。有一个巨大的脚本生成大量数据,这导致安装暂时满了。我相信 NFS 挂载来自 NetApp。我在当前目录中找到了 2 个文件。

一个是两天前最后保存的,一个是今天。它们的格式为:

.nfs.xxxxxxxxxxx

当我试图打开这个文件时,我看到我的一些代码,到处都是未知字符。显然,这必须是文件状态的二进制表示。

有没有办法从这个 NFS 挂载中恢复这个文件?如果 Emacs 有恢复这个文件的快捷方式,我会从 vim 切换到 Emacs!

4

2 回答 2

2

所以,我确实找到了恢复文件的方法。事实上,我找到了两种方法。由于它位于 NetApp NFS 挂载上,因此我能够使用快照功能。当您在目录中时,只需执行

ls .snapshot

这将提取系统管理员设置的所有快照。对于我们来说,我们有一个 hourly.0、hourly.1、nightly.0 和 nightly.1 备份。所以,我们可以回溯两天,而在同一天,我们可以回溯一小时(当前小时和上一个小时)。

另一种方法是将文件重命名为这样的 vim 交换文件。

mv .nfs.xxx my_vim_file.cpp.swp vim my_vim_file.cpp.swp

然后尝试在 Vim 中打开它,它应该会询问您是否要恢复交换文件,说是,它应该会回来!

于 2009-10-05T16:38:20.053 回答
0

显然,您的 Netapp 使用 NFS 来挂载其卷(例如,与 iSCSI 不同)。通常,每个 VM 都存储在 Netapp 文件管理器上的唯一卷(也称为数据存储)上。要找出卷和快照,然后还原快照,请在命令行执行以下命令:

# list all volumes, snapshots are taken of volumes
vol status
# list the snapshots available for a particular volume
snap list <vol_name>
# restore a snapshot, nightly.1 for example
snap restore <vol_name> nightly.1

而已。剩下的就是重新打开虚拟机,看看你是否已经恢复得足够远。如果没有,则使用较旧的快照进行另一次“快照还原”。

请注意,此过程假定您的管理员没有禁用快照(Netapp 默认具有快照计划)并且 Netapp 已获得 snaprestore 许可(使用“license”命令进行验证)。如果您有 Netapp OnCommand 系统管理器,这个过程可以进一步简化,它是一个用于管理 Netapp 的 GUI。在 GUI 中恢复快照很简单:

Go to Storage > Volumes > click on a volume > click on Snapshot Copies (at the bottom)
Choose a snapshot and restore
于 2013-11-09T09:14:28.183 回答