如何在 OSX 上撤消错误的 tar 命令?

如何在 OSX 上撤消错误的 tar 命令?

我花了上周末的时间创建了一个设置完美的 VirtualBox 实例。完成后,我尝试将 VirtualBox 打包成 tar+gzip 与其他人共享,结果我意外地运行了以下命令:

kamilski81:~/Documents/Virtual Machines.localized:ruby-1.9.3:$ ll
total 18450696
-rw-r--r--@  1 kamilski81  staff        6148 Aug 13 09:23 .DS_Store
-rw-------   1 kamilski81  staff  **9446748160 Aug 12 22:21 UbuntuAndroid.vdi**
drwxr-xr-x   5 kamilski81  staff         170 Aug  9 10:33 .
drwx------+ 21 kamilski81  staff         714 Aug  8 08:48 ..
drwxr-xr-x   9 kamilski81  staff         306 Oct 23  2009 .localized
kamilski81:~/Documents/Virtual Machines.localized:ruby-1.9.3:$ tar -czvf UbuntuAndroid.vdi U.tar.gz
tar: U.tar.gz: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors.
kamilski81:~/Documents/Virtual Machines.localized:ruby-1.9.3:$ tar -czvf U.tar.gz UbuntuAndroid.vdi
a UbuntuAndroid.vdi
kamilski81:~/Documents/Virtual Machines.localized:ruby-1.9.3:$ ll
total 32
drwxr-xr-x   6 kamilski81  staff   204 Aug 13 09:28 .
-rw-r--r--   1 kamilski81  staff   199 Aug 13 09:28 U.tar.gz
-rw-------   1 kamilski81  staff    45 Aug 13 09:28 UbuntuAndroid.vdi
-rw-r--r--@  1 kamilski81  staff  6148 Aug 13 09:23 .DS_Store
drwx------+ 21 kamilski81  staff   714 Aug  8 08:48 ..
drwxr-xr-x   9 kamilski81  staff   306 Oct 23  2009 .localized

查看我的文件后,我很快意识到我可能刚刚覆盖了我创建的 .vdi 文件。你们有办法恢复此操作吗?任何帮助都将不胜感激。谢谢。

答案1

首先,你应该立即停止向磁盘写入任何数据。如果你有任何后台程序(包括网络浏览器)可能正在执行任何类型的磁盘写入操作,请立即停止它们。

没有保证“取消删除”未链接的文件的方法,因为根据定义,一旦文件被取消链接或截断,它所占用的块现在将成为磁盘“空闲”池的一部分……换句话说,这些块可能会被传入的写入覆盖随时。这就是为什么您需要立即停止对磁盘的任何写入。如果您一直在使用系统并执行大量 I/O,那么除非您的磁盘非常大,否则很可能一个或多个扇区已被覆盖。

为您的操作系统获取一个“恢复删除”程序。确保它与您所使用的文件系统兼容。不要在您的本机操作系统上安装恢复删除程序,而是移除磁盘并将其安装在另一台计算机上。然后,使用您连接磁盘的系统上的恢复删除程序。除 Windows 之外的大多数操作系统在磁盘连接到系统时都不会对磁盘​​进行任何写入。Windows 可能会为缩略图写入 thumbs.db 文件。除非您完全关闭了自动运行、缩略图和 Windows 搜索(索引服务),否则我不建议尝试从 Windows 计算机中恢复。

如果您在 Mac 上的单独分区上安装了 Boot Camp 和 Windows,这可能是一种有效的方法,无需将硬盘移到另一台 PC。但就像我说的,请确保关闭缩略图生成和索引服务,以及任何可能接触这些数据的病毒扫描程序。

如果您在执行此操作的同一操作系统/分区中使用 Web 浏览器,则需要立即停止……实际上可能已经太晚了,因为 Firefox、Chrome 和 Safari 等浏览器存储了大型缓存数据库和配置文件信息数据库,这会导致非常频繁地对磁盘进行小规模写入。文件系统可能很容易决定将其中一个传入写入(例如您正在阅读的页面的缓存)放在曾经是 VDI 一部分的块上。因此,如果发生这种情况,文件将被损坏,并且几乎完全无法恢复。

有办法读取哪些数据用过的如果您是使用非常敏感和昂贵工具的数据恢复专家,那么在驱动器上 - 但是,一旦空闲池中的一个或多个文件块被覆盖,我们这些使用常用软件的凡人将无法恢复数据。

答案2

如果文件确实在垃圾箱中找到,并且您使用 UI 将其删除,那么您就安全了。如果您通过其他任何方式恢复文件,您怎么能确信它没有以某种不明显的方式被损坏呢?恢复一个小文件或一个您可以目测确认可能完好无损的文件是一回事,而拾起一个 GB 并希望一切顺利则是另一回事。

我建议你别浪费时间了。重做一下就行了。

相关内容