【发布时间】:2013-11-12 02:16:17
【问题描述】:
我必须从 CD 和 DVD 上归档大量数据,我认为这是一个有趣的问题,人们可能会对此提出有用的意见。这是设置:
- 该脚本将在多个平台上的多个机器上运行,所以我认为 python 将是最好的语言。如果逻辑造成瓶颈,任何其他语言都可以。
- 我们需要归档大约 1000 张 CD 和大约 500 张 DVD,因此速度是一个关键问题
- 数据非常有价值,因此验证会很有用
- 光盘很旧,所以很多光盘很难或无法阅读
现在,我正计划使用 shutil.copytree 将文件转储到目录中,并比较文件树和大小。或许可以加入一个快速哈希,尽管这可能会使事情变得太慢。
所以我的具体问题是:
- 从 CD/DVD 等慢速介质上复制文件的最快方法是什么? (或者方法是否重要)
- 关于如何处理可能出现故障的光盘的任何建议?您如何检测有问题的光盘?
【问题讨论】:
-
最快的做法是将这些位直接从磁盘设备复制到一个文件中,然后在一个单独的(无论是以后的,还是并发的)任务中,将每个磁盘文件解释为一个文件系统并复制文件出来。除了最大限度地减少非常慢的 CD 驱动器上的 I/O 数量外,它还有助于将物理 I/O 错误与文件系统解释错误分开。
-
但实际上,我不会尝试从头开始进行任何验证或数据恢复,除非您的实际目标是构建 CD 恢复项目。有像 IsoBuster 之类的工具(不是背书,只是我用过的一个),它们比你不用数十个月的努力编写的任何东西都做得更好。因此,我只需将 .iso 文件存档,对每个文件运行文件系统一致性检查,列出失败的文件,然后对该列表中的所有内容使用专用工具。
-
@abarnert - 关于块级读取,而不是文件级。当我对其中一些 CD 进行试验时,我发现这是非常正确的。我尝试将 rsync 与 dd 进行比较,有几张 DVD 使用 rsync 需要 1.5 小时,使用 dd 需要 18 分钟。随着 rsync 的进行,我可以听到驱动器磁头大声来回移动(显然文件系统在这些磁盘上的布局效率不高)。我还喜欢无需再次抓取光盘即可追溯恢复文件的能力。
标签: python backup archive cd dvd