linux mtools命令

命令简介

mtools 是一组用于在 Unix/Linux 系统中操作 MS-DOS 文件系统的工具集合[citation:2]。它允许用户直接读取、写入和操作 MS-DOS 格式的磁盘(如软盘、U盘和硬盘分区),而无需先挂载这些设备[citation:2]。

注意: 此 mtools 是用于操作 MS-DOS 文件系统的工具集,与同名的 MongoDB 工具集是不同的软件。

语法

mtools [选项]

或者使用具体的子命令:

mcommand [选项] [参数]

安装方法

各种Linux发行版的安装命令
# Ubuntu/Debian
sudo apt update
sudo apt install mtools

# CentOS/RHEL
sudo yum install mtools

# Fedora
sudo dnf install mtools

# Arch Linux
sudo pacman -S mtools

# openSUSE
sudo zypper install mtools

# 验证安装
mtools --version

mtools选项

选项 说明
-a 长文件名重复时自动更改目标文件的长文件名[citation:3]
-A 短文件名重复但长文件名不同时自动更改目标文件的短文件名[citation:3]
-o 长文件名重复时,将目标文件覆盖现有的文件[citation:3]
-O 短文件名重复但长文件名不同时,将目标文件覆盖现有的文件[citation:3]
-r 长文件名重复时,要求用户更改目标文件的长文件名[citation:3]
-R 短文件名重复但长文件名不同时,要求用户更改目标文件的短文件名[citation:3]
-s 长文件名重复时,则不处理该目标文件[citation:3]
-S 短文件名重复但长文件名不同时,则不处理该目标文件[citation:3]
-v 执行时显示详细的说明[citation:3]
-V 显示版本信息[citation:3]

支持的子命令

mtools 包含多个子命令,每个命令对应一个MS-DOS操作:

命令 功能 等效的DOS命令
mattrib 修改文件属性 attrib
mcopy 复制文件 copy
mdel 删除文件 del
mdir 列出目录内容 dir
mformat 格式化磁盘 format
mlabel 设置磁盘卷标 label
mmd 创建目录 md
mmove 移动或重命名文件 move, ren
mren 重命名文件 ren
mrd 删除目录 rd
mtype 显示文件内容 type
mcd 更改工作目录 cd
mbadblocks 测试磁盘坏块 chkdsk

基本用法

1. 查看支持的子命令
# 显示mtools支持的所有命令
mtools

# 输出示例:
# Supported commands:
# mattrib, mbadblocks, mcat, mcd, mclasserase, mcopy, mdel, mdeltree
# mdir, mdoctorfat, mdu, mformat, minfo, mlabel, mmd, mmount
# mpartition, mrd, mread, mmove, mren, mshowfat, mtoolstest, mtype
# mwrite, mzip
2. 查看MS-DOS磁盘内容
# 查看A盘(软盘)内容
mdir a:

# 查看C盘内容
mdir c:

# 使用宽格式列出文件
mdir -w a:
3. 复制文件到MS-DOS磁盘
# 从Linux复制文件到DOS磁盘
mcopy file.txt a:

# 从DOS磁盘复制文件到Linux
mcopy a:document.doc .

# 复制多个文件
mcopy *.txt a:
4. 管理DOS磁盘文件
# 在DOS磁盘上创建目录
mmd a:newdir

# 删除DOS磁盘上的文件
mdel a:oldfile.txt

# 重命名DOS磁盘上的文件
mren a:oldname.txt newname.txt

# 移动文件
mmove a:file1.txt a:subdir/file1.txt

配置文件

mtools 的行为可以通过配置文件进行自定义:

配置文件位置
# 系统级配置文件
/etc/mtools.conf

# 用户级配置文件
~/.mtoolsrc

# 通过环境变量指定配置文件
export MTOOLSRC=/path/to/config
配置示例
# /etc/mtools.conf 示例

# 软盘驱动器
drive a: file="/dev/fd0" exclusive
drive b: file="/dev/fd1" exclusive

# U盘和硬盘分区
drive c: file="/dev/sda1"
drive d: file="/dev/sdb1"

# 全局选项
MTOOLS_SKIP_CHECK=1
MTOOLS_FAT_COMPATIBILITY=1
MTOOLS_LOWER_CASE=1

实际应用场景

场景1:访问旧式软盘数据
# 查看软盘内容
mdir a:

# 备份软盘所有文件到当前目录
mcopy a:* .

# 将文档保存到软盘
mcopy report.doc a:
场景2:处理U盘中的文件
# 查看U盘内容(假设配置为d:)
mdir d:

# 整理U盘中的文件
mmd d:documents
mmd d:images
mcopy d:*.txt d:documents/
mcopy d:*.jpg d:images/

# 删除临时文件
mdel d:*.tmp
场景3:磁盘维护操作
# 格式化软盘
mformat a:

# 设置磁盘卷标
mlabel a:MYDISK

# 检查磁盘坏块
mbadblocks a:

高级用法

1. 使用磁盘映像文件
# 创建磁盘映像
dd if=/dev/zero of=disk.img bs=1k count=1440
mformat -i disk.img ::

# 将文件添加到磁盘映像
mcopy -i disk.img file.txt ::

# 从磁盘映像提取文件
mcopy -i disk.img ::file.txt .
2. 批量操作脚本
#!/bin/bash
# 备份DOS磁盘所有内容

echo "开始备份DOS磁盘..."
mdir a: > disk_contents.txt
mcopy -s a:* ./backup/
echo "备份完成"

注意事项

  • mtools 主要用于 FAT12/FAT16/FAT32 文件系统[citation:2]
  • 使用前需要正确配置驱动器和设备映射[citation:6]
  • 文件名和路径可以使用正斜杠(/)或反斜杠(\)作为分隔符[citation:2]
  • 包含空格或特殊字符的文件名需要引号包裹
  • 某些操作(如格式化)可能需要root权限
  • mtools 不会自动挂载/卸载设备,可以随时更换磁盘[citation:2]