如何在Windows中读取ext4分区?

我对ext4有两个问题:
1. 目前是否有办法在Windows(XP/Vista/7)中挂载ext4分区以获得基本的读取支持? 2. 如果没有,是否有计划将来支持这一功能?

1http://askubuntu.com/questions/108067/accessing-ubuntu-files-from-windows-xp - Tachyons
1好的,我明白我需要使用ext2read来完成这个任务,但是它打开后似乎没有显示任何文件。 - The Aivons
1@TheLordofTime 请重新检查。 - htorque
1你可以从Linux Live CD启动,通过它你可以在Windows驱动器和ext4之间复制文件。 - djangofan
5我认为这个问题被不公平地关闭了,但是在SuperUser.com上有很好的答案 - 如何在Windows上读取ext4分区? - Dan Dascalescu
如果你发现自己经常遇到Windows 10的问题,可以查看@DanDascalescu提供的链接。 - thoroc
尽快删除ext2fs/ext2read,否则会损坏您的Ubuntu分区。你无法从Windows读取Linux分区,这是一个事实。如果您想共享文件,请创建额外的NTFS分区。 - heynnema
10个回答

有一个叫做ext2read的实用程序可以在Windows中浏览Ext分区(包括Ext4分区),但正如@heynnema在下面的评论中提到的那样,它可能不再起作用,并且可能会损坏您的分区。
该项目自2012年以来没有更新。

很高兴知道,我只知道Windows支持ext2/3。不幸的是,这不是一个IFS驱动程序,所以你不能使用它来“挂载”文件系统? - JanC
你可以在MSDN上找到关于IFS的文档。 - JanC
很好,我之前试过ext2read,但当时它不支持extents。现在运行得很好。 :-) 至于我问题的第二部分:更多关于第三方工具的,而不是“嘿,Linux的朋友们,让这个工作起来”。;-) 我不应该问两种文件系统 - 我很乐意将您的回答标记为答案,但我仍然不知道是否有一些东西可以让我在Windows中读取btrfs分区。 - htorque
没问题。我还没有尝试过btrfs。希望有人能完整地回答你的问题,包括第二部分 :-) - Chakra
我从 #btrfs 得到了一个“不太可能”,所以我猜我们只能等待了。 :) - htorque
希望等待时间不会太长 :) - Chakra
2尽快删除ext2fs/ext2read,它会损坏你的Ubuntu分区。无论如何,你不能从Windows读取Linux分区。如果你想共享文件,请创建一个额外的NTFS分区。 - heynnema

ext4通过旧版ext2*项目提供了一些支持。btrfs目前没有Windows支持。新的文件系统总会有一个阶段,在另一个操作系统上没有支持,坦白说,这将很糟糕。

还应该提到,尝试将文件系统读入另一个系统的项目始终会增加您损坏分区的风险。

因此,考虑到这一点,有一个解决方案可能需要30分钟到一个小时的设置时间,它可以给您接近本机速度,任何Linux分区支持,并且与从Linux挂载分区一样安全(或非常接近):虚拟化!

是的,我建议您放弃300兆字节的内存和1吉字节的磁盘空间,在Windows中运行Ubuntu服务器。像Virtualbox和VMWare这样的现代虚拟化系统允许您向虚拟机传递整个磁盘或分区,所以这就是您要做的。从虚拟的Ubuntu中挂载它,安装Samba,共享Ubuntu挂载的磁盘,然后从Windows中挂载这些共享。

听起来似乎需要很多额外开销,但Ubuntu服务器非常高效,不需要太多资源。安装完成后,您可能只需要大约150兆字节的内存。


是的,这听起来像是一个很好的通用解决方案。然而,对于我的ext4只读情况,ext2read似乎工作得很好 - 而且,它是一个便携式的单文件exe。:) 很遗憾我不能接受两个答案。:( - htorque
我实际上曾经在Ubuntu服务器上运行过只有64MB内存的情况,只需要增加一个更大的交换分区就可以了。 - Perkins
而且...你也可以轻松地使用一个更轻量级的发行版,比如PuppyLinux,以节省内存和/或磁盘空间。 - Nathan Osman

如果你在谈论双启动系统,Windows 无法原生地读取 Linux 格式化的分区。因此,你有两个选择。
推荐解决方案 - 共享存储
创建一个 NTFS 分区,用于存放希望从 Windows 和 Ubuntu 都可以访问的文件,并将文件存储在该分区中。
这是推荐的、安全的解决方案。
备选解决方案 - 第三方软件
有一些适用于 Windows 的软件可以在一定程度上读写 Linux 分区。
其中一个例子是 Ext2Fsd。Ext2Fsd 对 EXT4 的支持有限。默认情况下,它会以只读模式加载文件系统,但如果你真的想要,可以启用读写模式。然而,这不被推荐
使用 Ext2Fsd 挂载的 EXT4 分区将显示为 EXT3。这是正常现象。
请注意,以下第四扩展文件系统的功能不受支持:
  • 日志:基于日志的操作,外部日志
  • 范围:大小截断和扩展,文件删除
  • 扩展属性:支持ACL

  • 注意:安装Ext2Fsd后可能会显示错误信息;但应用程序仍然可以正常工作。

安装完成后,请重新启动计算机并从开始菜单中打开Ext2 Volume Manager。

在这里,您可以为Linux分区分配或更改驱动器字母,挂载和卸载它们,或执行其他操作。

如果您想要为EXT4文件系统启用写入支持,请选择Ext2 Management,取消选中以只读模式挂载卷框,然后点击应用。

您还可以选择是否希望在启动时自动挂载Linux分区(对于USB驱动器和可移动介质不应使用此选项)。

注意:这个解决方案远非完美,您的Linux分区可能发生数据损坏的风险。请自行承担使用的风险!


3共享的NTFS存储存在一个问题 - 所有文件在Linux中看起来都是可执行的,因为NTFS不支持可执行属性。 - Dan Dascalescu

要读取ext4文件系统,您可以使用Ext2Fsd。这是一个适用于Windows的驱动程序。名称表明它只适用于ext2,并且该网站表示它适用于ext2和ext3,但最新版本也支持ext4。

我按照指示操作了,但似乎在Win 7上无法运行(网页上明确说明不支持Win 7和ext4 extents)。 - htorque
在Win10上运行良好 :) - Vipin Verma
这在Windows 10上不起作用。什么都没有显示出来。其他建议的第三方软件也是一样。它们都无法检测到任何驱动器。 - thephpdev

另一种选择是在Windows机器上安装CoLinux,并使用最小系统设置它(足够挂载所需的文件系统)和Samba。然后只需挂载您的文件系统,并将其共享给Windows。虽然不算优雅,但效果很好,而且不会因为错误的驱动程序而导致文件系统损坏。
如果从头开始安装CoLinux太麻烦,可以尝试AndLinux,它已经预先配置好了操作系统的CoLinux版本。安装只需二十分钟。您仍然需要设置挂载,但文件系统共享应该已经准备就绪。

1我会说这绝对值得一试。相比完全虚拟化,它有很大可能性更轻量级。只是我想知道具体能轻多少呢? - Adam Ryczkowski
1这取决于你在做什么。CoLinux是将Linux内核编译为Windows可执行文件,因此即使没有立即使用,内存也可以保持共享,而不会占用大量内存空间。此外,它没有虚拟化开销。对于老旧硬件来说,这非常重要。对于具备虚拟化扩展的现代处理器来说,这个问题就不那么重要了。 - Perkins

你可以在虚拟机中安装Linux,然后直接将物理驱动器或分区绑定到虚拟机上。然后设置虚拟机通过Samba/CIFS访问,并在Windows资源管理器中映射共享文件夹为驱动器盘符。
VirtualBox有一个指南可以教你如何完成这个过程。
这可能是最简单的方法,在正确设置后应该能透明地工作。它适用于Linux支持的任何文件系统,并且不需要使用过时(可能不稳定)的第三方工具。
经过一些努力,你甚至可以使整个主要的Linux发行版在Windows内部启动。

我喜欢你的方法指南,目前这是唯一可以在不出现错误的情况下写入磁盘的方法。http://www.ubuntugeek.com/howto-access-ext3-partition-from-windows.html - Ferroao

你可以使用ex2explore从Windows访问Ubuntu文件。

你可以尝试使用Ubuntu的Live CD启动,并从那里挂载你现有的Ubuntu分区,但如果它崩溃得太严重,我不确定这是否会起作用。

你需要在Ubuntu中安装Samba,并在Ubuntu分区中设置一个共享文件夹。然后你可以从Windows映射到该网络资源。

驱动器必须在一个单独的机器上(或由一个单独的虚拟机控制),运行Ubuntu(或其他可以访问分区的操作系统)。如果您在硬盘上安装了Ubuntu并设置了一个Samba服务器,然后将硬盘连接到运行Windows的计算机上,那么不会运行Ubuntu操作系统,也不会运行Samba服务器,也无法访问任何文件。当Windows访问Samba共享时,它不是从ext2/3/4或btrfs分区中读取--运行在服务器上的操作系统正在访问它以公开共享,而Windows正在访问该共享。 - Eliah Kagan
如果带有分区的驱动器安装在Windows机器上,您是正确的。但问题是是否可以挂载分区。通过映射到单独的机器,它是可以的。 - sbtech
2我不认为说Windows在这种情况下是“挂载分区”是准确的。Ubuntu系统正在“挂载分区”并“共享其内容”,而Windows系统则是“访问共享”。Windows根本没有对分区做任何操作。Windows甚至不知道分区的存在-对于Windows系统来说,分区的根目录可能根本不是一个挂载点。 - Eliah Kagan

是通过网络还是本地连接?如果是从网络上的其他计算机访问,那么您可能需要在Ubuntu计算机上配置Samba。

https://help.ubuntu.com/11.10/serverguide/C/samba-fileserver.html

如果您的计算机是双系统,并且想要从Windows访问Ubuntu,您可以尝试使用ext2read。我没有测试过它,但据说它支持大多数标准Linux文件系统。
另一个选择是使用Live CD / USB启动。然后,您将能够将文件复制到其他位置,例如另一个USB设备或网络位置。