Diego Mijelshon Asked: 2010-08-17 14:17:39 +0800 CST2010-08-17 14:17:39 +0800 CST 2010-08-17 14:17:39 +0800 CST 同时复制到两个位置 772 我对 bash 不是很流利……我想做的是以最快的方式将 DVD-R 的内容复制到两个不同的硬盘驱动器上。 (也欢迎基于 UI 的解决方案) 谢谢! bash 3 个回答 Voted Best Answer Gilles 'SO- stop being evil' 2010-08-17T14:55:19+08:002010-08-17T14:55:19+08:00 瓶颈很可能是从 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 qbi 2010-08-17T14:35:31+08:002010-08-17T14:35:31+08:00 一种基于 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)。将&第一个进程发送到后台,您可以立即输入并执行第二个命令。 David Z 2010-08-17T14:56:58+08:002010-08-17T14:56:58+08:00 正如 Li Lo 对 qbi 回答的评论中提到的,光驱(CD、DVD 等)是最慢的一种驱动器,因此您希望尽量减少从 DVD 驱动器读取的次数。显而易见的解决方案是将数据从 DVD 复制到硬盘驱动器上的一个位置,然后将其从该位置复制到另一个硬盘驱动器。 cp -r /media/cdrom /location1 cp -r /location1 /location2
瓶颈很可能是从 DVD 驱动器读取,因此我们必须确保要么只读取一次,要么读取两次,但间隔足够近,数据仍将在缓存中。后者听起来很难,所以让我们先来吧。
我们需要在某处弄一台复印机。如果我们仅限于基本的 shell 命令,唯一的选择是
tee
. 因此,我们需要将输入(文件树)转换为流,将流馈送到tee
,然后将每个输出流转换回文件树。执行此操作的工具是存档器。压缩将保留在内存中的东西是一种浪费,所以让我们使用tar
.管道 (
command0 | command1
) 允许我们将一个命令的输出馈送到另一个命令中。我们需要将 的输出提供tee
给另外两个命令,因此另一个 bash 结构派上用场:command1 >(command2)
创建一个管道,作为第一个命令传递给command1
它,而不是成为command2
. (在 bash 手册中查找进程替换。)这是命令(未经测试):
一种基于 shell 的解决方案是打开一个终端并输入:
该命令
cp
用于复制文件,-r
开关递归地复制所有文件。您必须输入 DVD 所在的目录(通常/media/dvd
或类似目录),然后输入硬盘中您想要文件的位置(即/home/diego/mydvd
)。将&
第一个进程发送到后台,您可以立即输入并执行第二个命令。正如 Li Lo 对 qbi 回答的评论中提到的,光驱(CD、DVD 等)是最慢的一种驱动器,因此您希望尽量减少从 DVD 驱动器读取的次数。显而易见的解决方案是将数据从 DVD 复制到硬盘驱动器上的一个位置,然后将其从该位置复制到另一个硬盘驱动器。