同时复制到两个位置

同时复制到两个位置

我对 bash 不是很熟练...我想做的是以最快的方式将 DVD-R 的内容复制到两个不同的硬盘上。

(也欢迎基于 UI 的解决方案)

谢谢!

答案1

瓶颈可能是从 DVD 驱动器读取,因此我们必须确保只读取一次,或者读取两次但间隔足够近,以便数据仍在缓存中。后者听起来很难,所以我们选择前者。

我们需要在某个地方安装一个复制器。如果我们只使用基本的 shell 命令,唯一的选择就是tee。所以我们需要将输入(文件树)转换为流,将流提供给tee,然后将每个输出流转换回文件树。执行此操作的工具是归档器。对保留在内存中的东西进行压缩是一种浪费,所以我们就使用 吧tar

管道 ( command0 | command1) 允许我们将一个命令的输出馈送到另一个命令中。我们需要将 的输出馈送tee其他命令,因此另一个 bash 构造派上了用场:command1 >(command2)创建一个管道,该管道作为其第一个命令传递给 ,command1而不是成为 的标准输出command2。(在 bash 手册中查找进程替换。)

这是命令(未经测试):

mkdir /media/disk0/copy_of_dvd /media/disk1/copy_of_dvd
cd /media/cdrom
tar cf - . | tee >(tar xf - -C /media/disk0/copy_of_dvd) | tar xf - -C /media/disk1/copy_of_dvd

答案2

一个基于 shell 的解决方案是打开终端并输入:

cp -r /location/of/DVD /hard/drive/a &
cp -r /location/of/DVD /hard/drive/b

该命令cp用于复制文件,开关-r会递归复制所有文件。您必须输入 DVD 所在的目录(通常/media/dvd或类似),然后输入硬盘中想要文件的位置(即/home/diego/mydvd)。将&第一个进程发送到后台,您可以立即输入并执行第二个命令。

答案3

正如 Li Lo 对 qbi 的回答的评论中提到的,光盘驱动器(CD、DVD 等)是最慢的驱动器,因此您需要尽量减少从 DVD 驱动器读取的数据量。显而易见的解决方案是将数据从 DVD 复制到硬盘驱动器上的一个位置,然后将其从该位置复制到另一个硬盘驱动器。

cp -r /media/cdrom /location1
cp -r /location1 /location2

相关内容