2009-08-27 109 views
0

我一直在研究Python中的算法,并且我正在使用Vim来编辑这个文件。我打开它,做了一个保存,并且出现了一个像它偶尔会出现的错误:如何恢复.nfs文件?

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

由于这种情况偶尔,我做了什么,我通常做的,我打:Q!在不写任何改变的情况下退出。没有伤害,没有犯规。当我看着我的文件时,一切都被抹去了!一切!

我跟周围的办公室,似乎NFS挂载得满满的,所以这就是为什么我也救不了任何东西。有一个巨大的脚本产生大量的数据,导致挂载暂时完成。我相信NFS挂载来自NetApp。我在当前目录中找到2个文件。

一个是最后两天前保存,今天一个了。他们在格式:

.nfs.xxxxxxxxxxx

当我尝试试图打开这个文件,我看到我的一些代码,在这里和那里,未知字符中散落。显然,这必须是文件状态的二进制表示。

有没有办法恢复从该NFS挂载这个文件?如果有一个快捷方式可以在Emacs中恢复这个文件,我将从vim切换到Emacs!

回答

2

所以,我找到了恢复文件的方法。事实上,我发现了两种方法。由于它在NetApp NFS装载上,因此我可以使用快照功能。当你在一个目录只是做

LS .snapshot

,这将拉起你的系统管理员设置的任何快照。对于我们来说,我们有每小时0次,每小时1次,每晚0次,每晚1次的备份。所以,我们可以返回两天,并在同一天,我们可以返回一小时(当前小时,以前)。

的另一种方法是,以文件重命名为这样的VIM交换文件。

MV .nfs.xxx my_vim_file.cpp.swp VIM my_vim_file.cpp.swp

然后尝试在Vim中打开它,它应该问你,如果你要恢复的交换文件,说是,它应该回来!

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的(使用“许可证”命令来验证)。如果您有用于管理Netapp的GUI的Netapp OnCommand系统管理器,可以进一步简化此过程。恢复GUI中的快照很简单:

Go to Storage > Volumes > click on a volume > click on Snapshot Copies (at the bottom) 
Choose a snapshot and restore