将文件夹并行复制到多个目的地

将文件夹并行复制到多个目的地

我必须将大约 250GB 的数据从主驱动器传输到许多 USB 驱动器,所有驱动器的大小和品牌都相同。当我使用 Mac OSX 中的 GUI 进行复制时,它会等待将所有文件复制到一个驱动器,然后将相同的文件复制到驱动器 2。

有没有办法复制文件,以便每个文件/位只读取一次,然后多次写入?这可能比一遍又一遍地读取相同的数据更快。我以前见过这个问题,但我不明白终端命令是如何工作的。

只是想让你知道,我对终端的经验很少,所以如果有人有出色的代码,他们能否解释一下我该如何调整它来为我工作?

非常感谢

詹姆士

答案1

我对 Mac OSX 了解不多,但我相信它的标准工具与 Linux 中的类似。

如果是针对 Linux/Bash 我会尝试:

tar -c /source/dirA/ /source/file1 | tee >(cd /foo/destination3/ && tar -x) >(cd /bar/destination2/ && tar -x) >(cd /foobar/destination1/ && tar -x) > /dev/null

每个目的地都会收到dirA/file1。您可以为第一个目的地提供更多参数tar(目录或文件)。要添加另一个目的地,只需tee以类似的方式输入额外的参数即可。

它是如何工作的?首先tar将目录和文件转换为可在管道中使用的单个比特流。该tee命令分叉该流;除一个副本外,每个副本都由tar适当的目标提取。最后一个副本沿管道向下移动;它被丢弃到/dev/null。(可以使用最后一个副本,destination0但语法会有所不同,所以我决定只使用 来保持简单tee)。

该代码是一个起点。您可能需要对其进行调整才能与 OSX 兼容。

答案2

经过一番思考,我的老板提醒我,免费软件 Davinci Resolve(一款调色应用程序)现在包含一些数据整理功能。这允许您选择一个源文件夹和多个目标文件夹,然后它会通过一次读取和多次写入将每个文件同时复制到每个驱动器。

我通过活动监视器确认了这一点,它显示每秒写入的数据是读取数据的三倍,而且我正在写入三个驱动器

https://www.blackmagicdesign.com/uk/products/davinciresolve

相关内容