适用于大量文件的最佳Linux复制命令


3

这是一个我无法找到明确答案的话题,或者至少有一个对于为什么一个解决方案比另一个解决方案更好的解释。可以说我有两个本地驱动器,一个有要复制的文件,一个是空的。反馈不是必要的,但最佳表现是一些警告。

  1. 从一点向下的文件结构必须一致。例如,文件可以存储在目录中x,其中x位于/my_drive_a/to_copy/files/x/-但是当我把它复制到/my_drive_b/,我想它只能从结构化/files/了。所以结果看起来有点像/my_drive_b/files/x/
  2. 每次传输的文件都不一样,因此像这样的功能rsync可能不是有利的功能cp
  3. 文件数量将达到数千,尽管它们都很小。
  4. 必须复制并保留数据my_drive_a

我最初的想法就是做cp -R /my_drive_a/to_copy/files/x/ /my_drive_b/files/x/。同样,由于Linux中的复制功能经验有限,我不确定这是否是复制如此大量文件的最佳解决方案。


3
我只想一起去rsync
的Arkadiusz Drabczyk

@ArkadiuszDrabczyk感谢您的反馈,您为什么选择rsync
sudosnake 2017年

1
1.我scp在复制大量数据方面经验不佳- 我尝试了一次而且崩溃了。2.如果连接已停止,rsync则不会从头开始复制所有内容,但只有尚未复制的文件3. rsync本地和以上ssh都可以使用,因此您可以使用具有相同选项的单个工具
Arkadiusz Drabczyk,

“我不确定这是否是复制如此大量文件的最佳解决方案。” 我认为最佳速度的“最佳”结果取决于某些因素。例如,众所周知,Reiserfs可以很好地支持许多小文件。因此,根据您使用的文件系统(或操作系统),您可能会得到不同的结果。你最好的选择可能是:停止尝试传输大量的小文件,但要将它们放入1个存档文件中,可能tar最广泛兼容并支持Unix元数据,然后传输一个文件。使用Unix管道可能很光滑,但如果出现问题则很麻烦。)
TOOGAM 2017年

Answers:


1

跟着去吧cpcoreutils经过精心优化,表现出色。除了--archiveflag 之外--sparse=never,如果您预测没有稀疏文件,请考虑使用。这将愚蠢cp并节省时间。

为什么不rsync呢?它将尝试分析文件,对它们进行排序(参见“SORTED TRANSFER ORDER” man rsync),并且很难打印有用的进度信息而不会严重阻碍整个过程。虽然某些选项可以关闭,但有些选项是强制性的,会导致执行时间变慢。

根据数据的大小,/dev/sda使用dd或等程序复制整个磁盘(例如)可能会更快ddrescue,但很难判断此选项何时更快。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.