刻录具有长 Unicode 名称的文件和目录

刻录具有长 Unicode 名称的文件和目录

是否有任何 CD/DVD 刻录应用程序/ISO 格式支持具有长非英语(unicode)名称的文件和目录?显然 Joliet-long ISO 标准支持最多 103 个字符的文件名,但我不确定它是否也支持 unicode,以及 Brasero 或任何其他 Gnome 应用程序是否可以用这种格式刻录 DVD。我发现一个名为燃烧器做得相当不错,但不幸的是它是一个 Win 应用程序。

我必须刻录外部硬盘的内容,但由于我的数据包含许多下载的页面(伴随的 HTML 页面目录包含图片、JS 脚本、CSS 样式等),并且许多文件名包含非英文字符,我需要一些应用程序/格式能够将它们安全地刻录到 DVD 上(无需像以前那样将内容压缩为英文文件名),以便 Linux 和 Win 机器可以读取内容。

答案1

GUI 应用程序

k3b能够ISO Level 3使用 创建文件系统 CD Joliet-long。要在终端中安装,请输入:

apt-get install k3b

不幸的是,k3b这是一个KDE应用程序,因此这会在您的机器上安装大量(不需要的)依赖项。因此,您可能更愿意使用命令行替代方案。

命令行

mkisofs可以创建 .iso 文件,Joliet-long可以使用所有其他应用程序(例如 Brasero)进行刻录

mkisofs -iso-level 3 -J -joliet-long -rock -input-charset utf-8 -o project.iso /path/to/files

在 Brasero 中,Burn image选择 project.iso 并点击刻录。

答案2

这里给出的 mkisofs 命令确实生成了一个文件系统,它能够在 Linux 和 MS-Windows 上显示相当长且奇特的名称。

您需要 Joliet 树才能在 MS-Windows 上看到正确的名称。Linux 将使用 Rock Ridge 扩展。

Joliet 采用 UTF-16 编码,这是 Unicode 的一种形式。规定的最大名称长度为 64 个字符(= 128 字节)。目录条目中的空间最多可容纳 103 个字符。

Rock Ridge 没有特定的字符集。文件名的长度可以为 255 个字节。它将复制存储在文件系统树中的名称字节。UTF-8 完全没问题。

ISO 级别影响 ISO 9660 目录树中的最大名称长度。级别 1 要求 DOS 样式名称(加上附加字符),级别 2 和 3 将名称长度限制为 30 个可自由选择的字符,加上强制的点和分号,加上版本号 1 到 32767。但这并不重要。Linux 和 MS-Windows 将使用来自 Rock Ridge 和 Joliet 的信息。

级别 3 允许 4 GiB 或更大的数据文件。注意:至少较旧的 mkisofs 版本会破坏其大型数据文件的副本。如果您有 4 GiB 或更大的文件,请使用已安装的 mkisofs 进行测试。

我建议使用我自己的程序 xorriso 而不是 mkisofs

xorriso -for_backup \
        -outdev /dev/sr0 \
        -blank as_needed \
        -joliet on \
        -map /path/to/files /

如果介质尚未清空,或者被要覆盖的 ISO 文件系统占用,这将清空驱动器 /dev/sr0 中的 CD、DVD 或 BD。它将硬盘上 /path/to/files 下的树复制到 ISO 文件系统 / 目录下的树。然后,它将使用 Joliet 和 Rock Ridge 创建 ISO 文件系统并将其刻录到空白介质。

系统将为超级块、目录树、整个映像以及每个单个数据文件添加 MD5 校验和。您可以通过以下方式验证整个映像是否刻录成功

xorriso -for_backup -indev /dev/sr0 -check_media --

或者通过以下方式检查每个单个数据文件

xorriso -for_backup -indev /dev/sr0 -check_md5_r sorry / --

相关内容