- Ubuntu 18.04 LTS
- exfat-fuse / exfat-utils 1.2.8-1(运行 sudo apt-get update 后将安装的最新版本。)
Linux 正在将文件写入 Windows OS 磁盘上的 Windows exFat 分区,而这些文件对 Windows 是不可见的。如何让这些文件对 Windows 可见?(更新 - 下文中,Linux 随后删除了这些文件,共 400GB,而正如您将看到的,Windows 显然没有这样做。)
我使用 Linux 中的 Photorec 将文件恢复到这个 exFat 分区。
exFat 分区已满 62%,但 Windows 报告它是空的,所有空间都是可用的(!!!)。
我重新启动进入 Linux(带 Linux 的外部 SSD),并再次安装 exFat 分区以确保文件确实存在。(这是一个 700GB 的分区,没有其他地方可以容纳这些数据)。Linux 可以看到该 exFat 分区上的文件。
我运行了chmod 777 FOLDER/ -R
,然后再次在 Windows 中检查。Windows 仍然报告该分区是空的(!!!)。
Photorec 上的 TestDisk 文档说 Windows 可能需要取得文件的所有权才能访问它们,但他们提供的链接说明了如何在 Windows 内部更改 recup_dir.1 (.2 ...) 目录的权限 - 在 Windows 内部这些目录是不可见的(并且 100% 的空间可用 !!!)。该文档位于此处:https://www.cgsecurity.org/wiki/PhotoRec_FAQ
如何让这些文件在 Windows 中可见?
谢谢你的帮助。
更新
我尝试了 TestDisk 文档中的建议,尽管我无法从 Windows 中看到任何文件夹。(文档假设 recup_dir.1 可从 Windows 查看。)我尝试在 Windows 中获取分区的所有权,而不是目录。
[Administrator command prompt]
C:\WINDOWS\system32>takeown /f e: /r /d y
ERROR: File ownership cannot be applied on insecure file systems;
there is no support for ACLs.
C:\WINDOWS\system32>
所以这不是问题,因为它与 exFat 无关。
我不敢从 Windows 向此分区写入任何内容,也不敢从 Windows 对其执行任何其他操作,因为 Windows 认为它是空的。Photorec 运行了 5 个小时来创建这些恢复的文件。
更新
我又进行了一次测试。我将一个由普通用户帐户(不是 root 或 PhotoRec)创建的文本文件复制到 exfat 分区。Windows 仍然没有看到任何文件。
更新
以下是一些显示问题的图像。它还显示了我运行 chkdsk 后发生的情况,没有正在进行修复。
sda 是内部(Windows)磁盘。sdb
是带有 Linux 的外部 SSD。
现在,让我们重新启动并看看 Windows 显示什么。
WINDOWS 报告该分区是空的 !!!
现在,运行 chkdsk,而无需选择修复分区。
现在,选择修复。(因为我无论如何都要放弃,然后使用格式化为 NTSF 的此分区重新运行 PhotoRec)
Windows 说分区已锁定。现在我要返回 Linux。
文件不见了。有 400GB 了。
我曾在 Windows 和 Linux 之间来回切换过几次,试图解决这个问题,但 Linux 仍然能够看到这些文件。
exfatfsck 报告没有错误,分区是空的 - 除了可能 1 个文件。我在我创建的新 exfat 分区上运行了 exfatfsck 进行测试,它报告空分区有 3 个目录和 2 个文件。因此那里可能有一个文件,但它没有显示在目录列表中。
我在该分区上运行了 testdisk。它报告
Bad GPT partition, invalid signature. Trying alternate GPT Bad GPT partition, invalid signature.
我运行了扫描(testdisk),让它运行了一会儿(这需要几个小时)。它发现了一些非 exfat 的文件(我猜是残留的,在我为此切出那个分区之前。我做了快速格式化。)。我本可以让完整扫描运行,但我没有这么做。我可以再次运行 PhotoRec。
解决方法
我研究了几个小时。我发现两篇帖子描述了非常非常相似的问题,还有许多帖子说 exfat 很危险,而 linux 对 NTFS 的支持要好得多。此外,与 NTFS 相比,exfat 分区很容易损坏。
因此,我将此分区重新设为 NTFS,并再次运行 PhotoRec。
我认为这是关于不要使用 exfat 的非常重要的教训。幸运的是,就我而言,它只是浪费了我很多时间。
问题
有人知道如何让共享的 exFAT 分区工作吗,或者这里发生了什么?也许这是 Ubuntu 18.04 LTS 的问题。如果能够使用 exFAT 来实现这一点就好了,因为使用 NTFS 我必须关闭快速启动,并避免让 Windows 休眠。(也许有解决方法……这是另一个问题。)
答案1
有人知道如何让共享的 exFAT 分区工作吗,或者这里发生了什么?
这可能是一个错误。Linux exfat 仍然很新,而 ntfs-3g 花了好几年才真正稳定下来。
如果能够为此使用 exFAT 就好了,因为使用 NTFS 时我必须关闭快速启动,并避免 Windows 休眠。
那么这可能就是你的问题。
ntfs-3g 不会阻止您挂载挂起/休眠的 Windows 分区,而是试图阻止您进行一些非常危险的操作,因为这些操作不可避免地会导致文件系统损坏。
如果您想在两个操作系统之间共享一个文件系统,则必须在两端禁用挂起/休眠/快速启动/watchamacallit。无论是 Windows 和 Linux,还是 Linux 和另一个 Linux。
也可以看看https://www.kernel.org/doc/Documentation/power/swsusp.txt
* BIG FAT WARNING ********************************************************* * * If you touch anything on disk between suspend and resume... * ...kiss your data goodbye. * * If you do resume from initrd after your filesystems are mounted... * ...bye bye root partition. * [this is actually same case as above]
因此,这不是文件系统特定的问题,而是一个普遍的问题。
挂起到磁盘(休眠)实际上并不会关闭系统。它会将内存状态转储到磁盘,而内存状态包括已安装的文件系统等。因此,即使机器“关机”,文件系统仍会处于安装状态。
在此状态下您唯一可以做的事情是“恢复”。如果您执行任何其他操作,则很可能会丢失数据。
暂停一个操作系统,然后启动另一个操作系统(而不是恢复),并更改磁盘上的数据……然后重新启动第一个操作系统并恢复。内存状态被加载并及时设置,系统继续运行,就好像它从未关闭过一样,它不知道在此期间另一个操作系统对磁盘所做的更改。
这与写入已挂载文件系统分区的原理相同dd
。一个文件系统一次只能由一个实体使用,如果你将它分成两个(Linux 内核和 dd、Linux 内核和另一个 Linux 内核、Linux 和 Windows,反之亦然),它们最终会相互破坏。
答案2
对我来说,我认为这个问题可能是文件系统休眠/锁定问题。我之所以这么说,是因为我多次启动和退出 Win10 和 Ubuntu 18.04,检查 msftdata 标志是否正常,情况相同,然后我使用 Ubuntu 将一个文本文件添加到“对 Win10 不可见”文件夹中,刚才我重新启动到 Win10,然后 bam!,一切都出现了。
所有复制和安装都是通过 Ubuntu 18 的标准文件资源管理器完成的……其实没什么特别的,就是即插即用。干杯
答案3
我在将 exFat 分区从一个 Ubuntu 20.04.1 LTS 盒子移动到另一个 Ubuntu 20.04.1 LTS 盒子时遇到了麻烦。在决定不保存可能变得很大的档案后,我使用简单的 cp 命令进行了备份。
cp -p -u -r -v Data/ /media/username/Backup
cp -p -u -r -v datamodeler.log/ /media/username/Backup
cp -p -u -r -v Desktop/ /media/username/Backup
由于这是我的所有数据、项目和文档的备份,所以我让它运行了一整夜。早上我恢复了机器,卸载了磁盘并在新机器上试用了它。
现象和上面报告的一样,出现了目录和文件结构,但是没有出现文件内容。
我重复了几次,删除并重新创建 exFat(类型 07)分区,使用 fdisk 命令行、磁盘实用程序对其进行检查。我开始怀疑媒体或设备是否坏了,但现在在仅使用 20GB 进行了有限测试并且源机器没有机会休眠后,我得到了文件。媒体文件播放等。
我认为这是由于挂起/休眠/恢复问题。我认为格式没问题。
请注意,Windows 操作系统从未触碰过我的文件。
答案4
如果有人觉得有用,我会发布它。我的设置/行为几乎与 OP 报告的完全相同;唯一明显的区别是 exFAT 分区是用 Windows 而不是 Linux 创建的。
在我的例子中chkdsk /f
,确实使文件对 Windows 可见