本文深入解析 Linux / Unix / FreeBSD 系统中的 mcopy 命令(英文全称:MS-DOS copy utility),提供跨平台使用指南和高效文件复制技巧,专门用于操作 MS-DOS / FAT 格式文件系统。

命令释义

mcopy ( MS-DOS copy utility ) 是 mtools 软件包中的核心命令,用于 在 Unix/Linux 系统与 MS-DOS 文件系统(FAT12/FAT16/FAT32)之间复制文件。其主要功能包括:

  • 💾 跨系统复制:在 Unix 和 MS-DOS 文件系统间双向传输文件
  • 📁 保留属性:保持 DOS 文件属性(归档/只读/系统/隐藏)
  • 🚀 直接访问:无需挂载即可操作 DOS 格式磁盘
  • 🔄 批量操作:支持通配符和目录递归复制

系统安装指南

mcopy 属于 mtools 软件包,各系统安装命令如下:

Debian / Ubuntu 系统

Debian / Ubuntu 系统安装 mcopy 所在的软件包 mtools:

sudo apt update && sudo apt install mtools -y

RHEL / AlmaLinux / Rocky Linux 系统

RHEL / AlmaLinux / Rocky Linux 系统安装 mcopy 所在的软件包 mtools:

sudo dnf update
sudo dnf install mtools

FreeBSD 系统

FreeBSD 系统安装 mcopy 所在的软件包 mtools:

sudo pkg update
sudo pkg install mtools

Arch Linux 系统

Arch Linux 系统安装 mcopy 所在的软件包 mtools:

sudo pacman -Sy
sudo pacman -S mtools

验证安装:mcopy --version

mcopy 命令语法

mcopy [选项] 源文件... 目标文件
mcopy [选项] 源文件... 目标目录
  • 源文件:支持 Unix 路径或 DOS 设备名(如 a:file.txt
  • 目标路径
    • DOS 设备:d:backup\file.doc
    • Unix 路径:~/documents/
  • 特殊设备名
    • a: = 第一个软驱
    • c: = 第一个硬盘分区
    • d: = 第二个硬盘分区

路径转换规则

  1. Unix 路径使用正斜杠 /(例:/home/user
  2. DOS 路径使用反斜杠 \(例:c:\windows
  3. 自动转换文件名:
    • 小写转大写
    • 特殊字符转 _
    • 截断超过 8.3 格式的文件名

mcopy命令示例

1:复制文件到 DOS 磁盘

mcopy report.txt a:
# 将当前目录的 report.txt 复制到软盘 (a:)

2:从 DOS 磁盘复制到 Unix

mcopy d:\data\config.ini ~/backup/
# 从 d: 盘复制 config.ini 到 Unix 的 backup 目录

3:保留文件属性复制

mcopy -a manual.doc c:\docs\
# 复制时保留 DOS 文件属性(归档/只读等)

4:递归复制目录

mcopy -s -n ~/photos/*.jpg d:\images\
# 递归复制所有 JPG 文件,保留目录结构(-s)
# -n 选项自动转换文件名

5:批量复制文本文件

mcopy -t -m *.txt a:
# -t 将文本文件从 Unix LF 转换为 DOS CRLF
# -m 保留文件修改时间

mcopy 命令选项详解

如下给出 mcopy 命令的详细解释说明:

选项 说明 示例
-n 自动转换文件名(符合 8.3 格式) mcopy -n longfilename.txt a:
-m 保留文件修改时间 mcopy -m file.doc c:\
-a 保留 DOS 文件属性(归档/只读等) mcopy -a config.sys b:
-s 递归复制子目录 mcopy -s ~/data/* d:\backup\
-Q 遇到错误时询问 mcopy -Q critical.bin a:
-v 详细模式(显示操作过程) mcopy -v *.txt c:\docs\
-t 文本模式转换(LF ↔ CRLF) mcopy -t script.bat unix/
-b 批处理模式(不询问确认) mcopy -b *.* d:
-p 保留文件权限(仅 Unix → DOS) mcopy -p document.pdf a:
-o 覆盖目标文件不提示 mcopy -o update.exe c:\
-i 指定磁盘映像文件 mcopy -i disk.img file.txt ::
-D 调试模式(显示内部操作) mcopy -D debug.log c:\
-- 终止选项解析 mcopy -- -file.txt a:

与 cp 命令的区别

特性 mcopy cp
文件系统 专用于 MS-DOS/FAT 通用文件系统
文件名转换 自动转换大小写和格式 保留原始文件名
换行符处理 支持 LF ↔ CRLF 转换 不做转换
设备访问 直接访问磁盘设备 需挂载设备
属性保留 支持 DOS 属性(归档/只读) 保留 Unix 属性

结语

mcopy 是处理 MS-DOS 文件系统的专业工具,关键要点:

  1. 跨平台兼容:无缝连接 Unix/Linux 与 DOS 系统
  2. 高效传输:直接访问设备无需挂载
  3. 格式转换:自动处理文件名和换行符差异
  4. 适用场景
    • 操作软盘/USB 闪存等 FAT 格式设备
    • 访问 DOS 磁盘映像文件(.img)
    • 恢复旧 DOS 系统数据

最佳实践

  • 复制文本文件使用 -t 确保换行符正确
  • 复制可执行文件使用 -a 保留属性
  • 处理长文件名使用 -n 自动转换
  • 批量操作使用 -b 避免交互中断
  • 通过 -i 直接操作磁盘映像文件

通过掌握 mcopy 命令,您将能高效管理 MS-DOS 格式存储设备!