同时复制到外部硬盘

同时复制到外部硬盘

我的内置硬盘中有一个文件夹。我需要将该文件夹复制到多个外置硬盘。如果可以同时进行复制,这将帮助我节省时间。

文件夹名称为“AllFiles”文件夹位于内部硬盘的根目录。/AllFiles

否将其复制到/dev/sdb, /dev/sdc 和/dev/sdd

我看到了一些使用 cat 和 tee 的命令行。我无法测试它,因为它有特定用途,并且目标是网络文件夹。

答案1

解决这个问题的方法实际上取决于你的精确的目标是。

在这里使用 TEE 不会有太大帮助 - tee 允许您获取 stdout 并将其分成两部分,尽管可以通过 tee 对每个文件进行 cat 来强制它执行您的命令。

最简单的方法是简单地安装每个驱动器并启动 3 个副本(您可以在 3 个终端中执行此操作,也可以发出相同的命令 3 次,每次后都使用 & 将其放在后台)。这将使 IO 牢牢地扎根。

如果不需要移除驱动器,并且需要相同的信息,我会使用 mdadm 取出 3 个驱动器并创建 RAID1 阵列(即相同数据的 3 个副本)。然后,我会在 RAID 上创建一个文件系统,安装阵列并进行复制。这意味着更少的读取(可能),以及写入磁盘的最小开销 - 但设置相当多。(是的,然后您可以获取单个磁盘并将其安装,而无需将其作为阵列的一部分)

答案2

是的,您可以使用 cat 和 tee 将文件复制到多个目的地:

cat source.dat | tee copy1.dat | tee copy2.dat >copy3.dat 

或者更加对称一点:

cat source.dat | tee copy1.dat | tee copy2.dat | tee copy3.dat >/dev/null

实际上,您可以将上面这行放在一个以源文件作为参数的简短脚本中,然后在 find 命令中调用该脚本:

find $directory_to_be_copied -type f -exec copy_multiple {} \;

但是,如果您节省磁盘读取量,则可能会遇到 I/O 带宽问题。

相关内容