![取消ntfs驱动器之间的cp + du导致数据丢失?](https://linux22.com/image/201799/%E5%8F%96%E6%B6%88ntfs%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84cp%20%2B%20du%E5%AF%BC%E8%87%B4%E6%95%B0%E6%8D%AE%E4%B8%A2%E5%A4%B1%EF%BC%9F.png)
我使用 Mac OSX 并使用 Mounty 工具使用两个外部 NTFS 硬盘驱动器(HD1、HD2)以读+写模式安装它们。我需要将两个大文件夹从 HD1 移动到 HD2。
我在 HD1 中打开一个终端/Volumes/HD1/my/source/path
,在其中启动了一个cp -r my_folder /Volumes/HD2/my/dest/path/
命令。
同时,我打开了一个终端/Volumes/HD2/my/dest/path/
并开始使用 监控进程du -sh my_folder
。现在,每次我发出这样的命令时,我都会cp: my_folder/my_file_N: Input/output error
在第一个终端中收到一条消息,因此我决定在第一个终端中使用 CMD+C 来停止复制,并在不监视进程的情况下重新开始。在重新启动复制之前,我检查了目标文件夹,它显示了一些损坏的(较小的)文件。因此,我删除了目标文件夹:不是通过终端,而是通过文件浏览器中的 CMD+del - 是的,我确信我是在目标位置执行此操作的:)
我回到我的第一个终端并cp
再次发出相同的命令 - 只是它立即完成。所以我去检查:我的my_folder
HD1和HD2都是空的。它ls
是空的并且在文件浏览器中显示为空。
有人可以吗:
- 解释一下发生了什么事? (不要忽视移动数据和命令之间是否确实存在冲突的问题
du
) - 建议我如何恢复这些数据?
请注意,目前我太害怕做一些不可逆转的事情,所以我还没有尝试卸载/重新安装我的驱动器... df -h .
HD1 中的 A 显示与之前相同的已用/未使用空间,所以我这样做希望我能拿回这些文件。
答案1
我对事件的解释是:源磁盘检测到错误,该错误被报告为您看到的输入/输出错误。
由于该错误,NTFS 驱动程序要么尝试卸载文件系统,要么进入某种保护状态,阻止对包含错误的文件系统进行任何进一步的操作。
事实证明,NTFS 驱动程序与 MacOS 的集成显然并不完美:也许 MacOS 没有完全等效的文件系统概念以这种方式对错误情况做出反应,或者现在也导致对目录列表的请求由于驱动程序的当前状态而出现错误,并且操作系统假定该错误意味着该目录为空。
Mounty.app 的网页似乎表明这并不是完全未知的行为:
突然我所有的文件都消失了 - 请帮忙!
当由于卸载操作未完成而导致所有文件未正确写入时,通常会发生这种情况。 NTFS 分区可能被标记为“脏”,并且 Apple NTFS 驱动程序无法从该情况中恢复。 Mounty 不会自行删除任何内容,请尝试使用常用的恢复软件(即 chkdsk 命令行实用程序或 GetDataBack for Windows 等专业工具)在 Windows PC 上恢复您的文件。如果您没有任何 Windows,则可以使用可处理 NTFS 分区维护的 macOS 工具,例如 Paraogn Harddisk Manager 或 Tuxera Disk Manager。
但在您的情况下,错误情况不是由未完成的卸载触发的,而是由磁盘读取错误触发的(除非读取错误导致 NTFS 驱动程序决定自行卸载磁盘?)。然而,所产生的行为似乎是相似的。
我假设这可能是您的 HD1 开始出现故障的第一个迹象,所以我首先尝试将 HD1 的磁盘映像制作到其他一些已知良好的介质上,以防进一步尝试使用该磁盘使问题变得更糟。然后我会遵循上面引用的建议:将磁盘连接到 Windows 系统并使用本机 Windows 工具尝试恢复数据。
在再次信任 HD1 磁盘之前,我还会仔细检查它:这个问题在 AskDifferent.SE 上似乎对可用于检查磁盘 SMART 诊断的工具有一些建议,尽管这个问题相当老了。
(如果有人知道更多用于在 MacOS 上访问 SMART 诊断的最新工具,请随时编辑或插话!)