linux访问windows中的文件比windows访问linux中的文件更容易,我们先说下linux访问windows中的文件

我们要访问windows的文件首先得把文件所在的分区挂载到linux根目录下(linux只有一个根目录)

那什么是挂载呢?

   类似于 Windows下面的盘符概念。

把一个分区挂载到一个目录上(Linux不支持盘符这种方式),这样才能对这个磁盘上面的文件进行操作。

这个时候这个分区需要继承这个目录的目录级别。

比如某个分区 sda2 ,挂载到 /usr/src 里(举例啊),这个时候这个sda2里面的aaa目录,现在就表示为/usr/src/aaa

如果他挂载到 /var/www下面。sda2里面的aaa就变成了/var/www/aaa

这点也类似于 Windows的修改盘符,比如D:\aaa。把盘符修改为E,这个目录就成了E:\aaa。但他们还是一个东西。

挂载后,你所修改的内容(包括复制,删除,移动等),只要在这个被挂载的分区所包含的文件、目录,都会保存在这个分区里,而不是原来的目录里。

效果和 Windows 里面用 U 盘的效果一样。

只不过 U 盘用的是一个盘符,Linux 里面,需要一个目录。

你把 Windows 想象成一个最高级别的目录是“我的电脑”,C D E F 这些盘符都是他的一个“目录”,就能发现他和Linux的挂载很相似,只不过Windows不允许出现没有挂载分区的空的这种挂载点而已。

这里面 / 也是一个挂载点,就像 C: 一样,一个不允许随便改的专用挂载点。

下面介绍手动和自动挂载两种方式

1. 手工挂载

Linux中也可以读取Windows分区,包括fat32格式的和ntfs格式的。首先你得知道Linux下对硬盘分区的称呼。比如Windows下的C盘通常是hda1D盘是hda5E盘是hda6等等。

要挂载Windows分区,首先得确定你所用的Linux系统的locale(这个locale包括了系统使用的语言和字符的编码等信息)。中文Linux常用的localezh_CN.gb2312zh_CN.gbkzh_CN.gb18030zh_CN.UTF-8

在默认安装中,Debian LinuxMandriva Linuxlocalezh_CN.gb2312,Ubuntu LinuxFedora Linuxlocalezh_CN.UTF-8。最好不要随便更改locale,否则会出现很多乱码的情形。要查看系统的locale,可以在终端下输入下面的命令查看:echoLANG

其次,你得知道你的windows分区的格式,这个在windows的分区的属性中可以看到,一般是fat32ntfs格式的。

假设你的localezh_CN.UTF-8,要挂载一个/dev/hda1fat32格式的windows分区到/mnt/C目录(若这个目录不存在手工新建一个使用mkdir命令),可以在终端下输入以下命令(Ubuntu里还需要在这行命令前加上sudo表示暂时获得超级权限)mount -t vfat /dev/hda1 /mnt/C -o iocharset=utf8

如果你的locale不是zh_CN.UTF-8,把上面命令的utf8改为gb2312;如果这个windows分区是ntfs格式的,将上面命令的vfat改为ntfs

这样挂载的ntfs格式的分区,只有root能读取,如果需要让普通用户也能读取,需要再加上umask=022选项,如下:mount -t ntfs /dev/hda1 /mnt/C -o iocharset=utf8,umask=022

类似地,如果要让挂载的分区允许所有用户读取和修改,可以将上面的umask=022,改为umask=0就可以了。

卸载分区就简单多了: umount /dev/hda1

有时候卸载分区时提示分区繁忙(device is busy),可以先用下面的命令看看哪个进程在使用此分区:fuser -cu /dev/hda1

假如屏幕的输出为 /dev/hda1: 8463m(cck)

则可以用此命令看这个进程对应的程序名字: ps 8463

然后可以用此命令结束此进程: kill -9 8463

这样就可以正常卸载分区了。

2. 自动挂载

要让Linux系统启动时自动挂载windows分区,可以把上述的命令写入/etc/fstab文件中,下面是一个例子:

# /etc/fstab: static file system information.

#

#[file system] [mount point] [type] [options] [dump] [pass]

proc /proc proc defaults 0 0

/dev/hda9 / ext3 defaults 0 1

/dev/hda13 none swap sw 0 0

/dev/hdc /media/cdrom iso9660 ro,user,noauto 0 0

/dev/fd0 /media/floppy auto rw,user,noauto 0 0

/dev/hda10 /mnt/debian ext3 defaults 0 0

/dev/hda1 /mnt/C ntfs utf8,umask=022 0 0

/dev/hda5 /mnt/D vfat utf8,umask=0 0 0


下面简单介绍一下从Windows系统访问Linux的方法。

 

最常用的是一个叫做explore2fs的工具。这个工具可以免费下载,并且提供接口以方便扩展。explore2fs操作是图形化界面,只要运行就知道怎么用了。该工具支持ext2ext3,还可以将Linux分区上的文件拷贝出来,通常用来备份文件。不过一般来说,访问Linux分区的工具都不会提供写操作,有的即使支持写也不会将其作为默认选项。explore2fs说明中是支持写操作的,不过我按照要求更改设置后仍然没有成功写入过。

 

第二款工具是Ext2IFS。与explore2fs不同的是,Ext2IFS不是直接从其界面中访问Linux分区,而是作为一个windows服务运行。它的设置界面是图形化的,支持ext2ext3。按照操作步骤设置完成后启动服务,将会在我的电脑里出现几个新的分区,它们就是Linux分区的映射。此后就可以如访问Windows文件系统一样访问它们。这个工具也不支持写操作。下载地址(另存为)

 

另一个工具叫做Ext2Fsd,这是我用过的工具里面唯一写操作成功的,并且它直接提供源码。和Ext2IFS一样,Ext2Fsd也是作为一个服务在后台运行,访问Linux分区时也是通过我的电脑里的虚拟分区映射访问。不过其启动要通过命令行,而且要知道某个分区的具体位置。比如有一个分区在第一块硬盘的第三个分区上,现在我想把它映射为f:盘,那么就执行命令mount 0 1 f:。不过在这之前记得要运行setup,要不服务就没运行。Ext2Fsd默认也不会将写操作打开,需要修改注册表文件Ext2fsd.reg,将WritingSupport改为00000001,另外要修改配置文件ext2fsd.inf,将里面WritingSupport改为1。重新导入注册表并启动服务,写操作就可以顺利完成了。下载地址(另存为)

 

Windows下访问Linux分区会带来很多方便,比如有一次我不小心吧fstab文件修改错了,以致Linux无法启动,其实只需吧fstab文件修改一点即可,于是用Ext2Fsd打开写操作修改了fstab,系统就成功恢复了。不过,写操作是非常危险的,如果一定要用也要小心操作哦。



GitHub 加速计划 / li / linux-dash
10
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:1 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐