同时复制到两个位置

Die*_*hon 7 bash

我对 bash 不是很流利……我想做的是以最快的方式将 DVD-R 的内容复制到两个不同的硬盘驱动器上。

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

谢谢!

Gil*_*il' 13

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

我们需要在某个地方弄一个复印机。如果我们限制使用基本的 shell 命令,唯一的选择是tee. 因此,我们需要将输入(文件树)转换为流,将流提供给tee,并将每个输出流转换回文件树。这样做的工具是存档器。对将保留在内存中的内容进行压缩是一种浪费,所以让我们使用tar.

管道 ( command0 | command1) 允许我们将一个命令的输出提供给另一个命令。我们需要将 的输出输入tee另外两个命令中,所以另一个 bash 构造就派上用场了:command1 >(command2)创建一个管道,command1作为第一个命令传递给它,而不是成为 .bashrc 的标准输出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
Run Code Online (Sandbox Code Playgroud)