我的内置硬盘中有一个文件夹。我需要将该文件夹复制到多个外置硬盘。如果可以同时进行复制,这将帮助我节省时间。
文件夹名称为“AllFiles”文件夹位于内部硬盘的根目录。/AllFiles
否将其复制到/dev/sdb
, /dev/sd
c 和/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 带宽问题。