banner
约 1,800 字
6 分钟

Linux 下刻录 DVD 数据盘:一套更稳的备份流程

摘要

一套 Linux 下刻录 DVD 数据盘的稳妥流程:先确认容量,再生成 ISO、挂载检查、低速刻录,最后做字节级校验。

现在已经很少有人天天刻光盘了,但在归档照片、文档、旧项目、学习资料时,DVD 仍然有它的价值:离线、独立、不依赖账号,也不怕某个云服务突然改规则。它不适合作为唯一备份,但很适合作为“多一份冷备份”。

先确认容量,不要贴着上限刻

普通单层 DVD+R / DVD-R 标称 4.7GB,但这是十进制 GB。换成 Linux 里常见的 GiB,大约是 4.38GiB。

实际备份时不要把盘塞满。比较稳妥的范围是每张盘控制在 4.0GiB 到 4.2GiB 左右。光盘边缘的质量通常不如内圈,文件系统本身也会有一点开销,留出余量比刚好塞满更可靠。

查看当前目录下各文件夹大小:

bash
du -h --max-depth=1 | sort -hr

只看一级子文件夹:

bash
du -h --max-depth=1 */ | sort -hr

某个目录过大时,再继续往里看:

bash
du -h --max-depth=1 ./some-folder | sort -hr

如果目录里主要是照片、视频、RAW 原片、PDF、压缩包、安装包,通常不要指望再压缩能省多少空间。这些文件大多已经压缩过,zip/tgz 很可能没什么收益,甚至会让恢复风险变高。

超过容量就拆盘

如果总大小在 4.2GiB 以内,可以做成一张 DVD。

如果超过 4.3GiB,就不要硬塞普通单层 DVD。更合适的做法是拆成多张盘,或者改用 DVD+R DL、BD-R、移动硬盘、NAS 等容量更大的介质。

长期归档时,最好按文件或目录拆盘,而不是把所有内容打成一个巨大的压缩包再分卷。数据盘里的文件是独立存在的,某个区域读不出来,通常只影响附近的文件;巨大的压缩包一旦中间损坏,后面的内容可能都不好恢复。

生成 ISO

安装需要的工具:

bash
sudo dnf install xorriso dvd+rw-tools

Debian / Ubuntu 系可以用:

bash
sudo apt install xorriso dvd+rw-tools

进入准备刻录的目录,生成 ISO:

bash
xorriso -as mkisofs \
  -iso-level 3 \
  -R -J -joliet-long \
  -V "BACKUP_01" \
  -o ../BACKUP_01.iso \
  .

这条命令会把当前目录内容做成一个光盘镜像。最后的 . 表示当前目录;-o ../BACKUP_01.iso 表示把 ISO 输出到上一级目录,避免把正在生成的 ISO 又包含进源目录里。

几个参数值得保留:

-iso-level 3 用来放宽传统 ISO9660 的限制,适合现代数据盘。

-R 启用 Rock Ridge 扩展,Linux 下读取更完整,能更好地保留文件名、权限和符号链接等信息。

-J -joliet-long 启用 Joliet 扩展,主要照顾 Windows,长文件名和中文文件名更容易正常显示。

-V "BACKUP_01" 是光盘卷标。卷标建议短一点,用英文、数字、下划线,少用特殊符号。

有些教程会加 -udf,但并不是所有 xorriso 的 mkisofs 兼容模式都支持。普通数据 DVD 用 ISO9660 + Rock Ridge + Joliet 已经足够;如果提示不支持 -udf,删掉即可。

检查 ISO

生成后先看大小:

bash
ls -lh ../BACKUP_01.iso
stat -c '%s bytes' ../BACKUP_01.iso

普通单层 DVD 建议不要超过 4,400,000,000 bytes。理论极限更高,但不建议贴边。

再把 ISO 挂载起来检查一下:

bash
mkdir -p /tmp/iso-test
sudo mount -o loop ../BACKUP_01.iso /tmp/iso-test
ls -la /tmp/iso-test
sudo umount /tmp/iso-test

如果看到 source write-protected, mounted read-only 之类的提示,不用紧张。ISO 镜像本来就是只读的,这不是错误。

这一步主要看三件事:目录结构对不对,文件名是否正常,有没有多套一层不想要的顶层目录。

刻录 ISO

先确认光驱设备名:

bash
lsblk

常见光驱设备是:

bash
/dev/sr0

刻录:

bash
growisofs -dvd-compat -speed=4 -Z /dev/sr0=../BACKUP_01.iso

-dvd-compat 会让光盘以更兼容的方式结束写入,方便在其他系统和光驱上读取。-speed=4 是请求 4 倍速刻录,实际速度可能由光驱和盘片决定,不一定完全一致。对于备份盘,速度低一点通常更稳。

刻录过程中不要移动外置光驱,不要强行弹出光盘,也不要中断命令。

也可以用 K3b

图形界面可以用 K3b。打开 K3b 后选择 Burn Image,选中已经生成好的 ISO,设置较低的刻录速度,并勾选校验。

如果 K3b 提示找不到 cdrskin,安装依赖即可:

bash
sudo dnf install cdrskin libburn

我的习惯是:ISO 用命令行生成和检查,实际刻录可以交给 K3b。图形界面看进度方便,命令行做校验更直接。

刻完一定要校验

刻录完成不等于备份完成。光盘能挂载,也不代表每一个字节都和原 ISO 一致。最稳的做法是直接比较 ISO 和光盘内容:

bash
sudo cmp -n "$(stat -c%s ../BACKUP_01.iso)" ../BACKUP_01.iso /dev/sr0

如果命令没有任何输出,通常就是一致。

也可以再挂载光盘看一眼:

bash
mkdir -p /tmp/dvd-test
sudo mount /dev/sr0 /tmp/dvd-test
ls -la /tmp/dvd-test
sudo umount /tmp/dvd-test

挂载检查适合确认目录能不能打开,cmp 更适合确认写入是否可靠。两者都做,心里最踏实。

多张盘怎么命名

拆成多张盘时,卷标尽量短:

纯文本
BACKUP_01
BACKUP_02
BACKUP_03
BACKUP_04

ISO 文件名可以写得更详细一些:

纯文本
backup_project_2026_disc1.iso
backup_project_2026_disc2.iso
backup_project_2026_disc3.iso
backup_project_2026_disc4.iso

卷标短,跨系统读取更稳;文件名详细,日后在硬盘里查找更方便。

为什么不推荐 zip/tgz

zip/tgz 不是不能用,而是不适合作为光盘长期备份的默认方案。

普通数据 DVD 中,文件仍然是一个个独立文件。即使某个区域损坏,通常也只是局部文件受影响。

如果把所有内容打成一个大压缩包,问题会集中到这个包上。一旦压缩包中间某处损坏,后面的内容可能会很难恢复。分卷压缩包更麻烦,因为恢复时往往要求所有分卷都在,而且都不能出问题。

所以,除非是为了传输、加密或统一封装,否则光盘备份更适合直接做数据 ISO。

常用流程

日常刻录可以记住这套顺序:

纯文本
查看容量
必要时拆盘
生成 ISO
挂载检查
低速刻录
字节校验
贴好标签

常用命令整理如下:

bash
du -h --max-depth=1 | sort -hr
bash
xorriso -as mkisofs \
  -iso-level 3 \
  -R -J -joliet-long \
  -V "BACKUP_01" \
  -o ../BACKUP_01.iso \
  .
bash
stat -c '%s bytes' ../BACKUP_01.iso
bash
mkdir -p /tmp/iso-test
sudo mount -o loop ../BACKUP_01.iso /tmp/iso-test
ls -la /tmp/iso-test
sudo umount /tmp/iso-test
bash
growisofs -dvd-compat -speed=4 -Z /dev/sr0=../BACKUP_01.iso
bash
sudo cmp -n "$(stat -c%s ../BACKUP_01.iso)" ../BACKUP_01.iso /dev/sr0

光盘刻录本身不复杂,要多加注意流程。

不要贴边塞满,不要跳过检查,不要省略校验。

只要按“先 ISO、再刻录、再校验”的顺序来,Linux 下刻录数据 DVD 仍然是一件很可靠的事。

END