【问题标题】:Fastest way to copy a large folder in unix在 unix 中复制大文件夹的最快方法
【发布时间】:2020-11-14 21:23:21
【问题描述】:

我正在尝试复制一个 1-5gb 左右的大文件夹,其中包含文件范围为 1kb-35mbs 的子目录。我尝试使用“cp”,但需要 10 多分钟。在 Windows 中复制和粘贴似乎更快。

我是 unix 新手,我想知道是否有更快的替代方案或 cp,或优化其工作方式的方法。我已经阅读了缓冲区,但我对它们的工作方式感到非常困惑(所以我决定不使用它)。

我想要做什么: 我需要将文件从我的 H 驱动器传输到其他地方的网络驱动器(还要从网络驱动器中删除文件,以便可以将新文件复制到其中)。这是一项非常直接的任务,我正在努力。只需要大约二十年的时间才能完成。

附:不确定我是否被告知错误,但在 unix 中工作通常比 windows 快,对吧?

【问题讨论】:

  • cp 没有任何选项可以修改其性能。您机器上的“H 驱动器”是什么?网络驱动器是如何映射的——NFS、Samba 等等?您是否尝试过cpio -p ... 或tar 的两个副本((cd /h-drive/folder; tar -cf - .) | (cd /net/drive/folder; tar -xf -)。您可以通过指示tar 自己执行cd 操作来优化它。

标签: unix optimization cp


【解决方案1】:

您可以尝试使用tar 或zip 或gzip 之类的压缩器将整个目录结构放入一个存档文件中,复制存档文件,然后在目的地取消存档。我怀疑这总体上会节省您的时间,但至少复制步骤会更快。

tar -cvf folder.tar /path/to/original/folder
cp folder.tar /path/to/destination
cd /path/to/destination
tar -xvf folder.tar

-c 创建
-v 详细
-f 文件名是...(用户把它放在后面)

【讨论】:

  • 接受您的回答,因为这是一篇旧帖子,我真的不记得我需要这个做什么了。但是现在看你的答案很有意义。如果其他人遇到这种情况并且对 radiaphs 或 Jonathans asnwer 有好运,请在此处更新
  • 这根本不是一个好主意。使用 rsync、rclone、unison,但不要使用 this。
【解决方案2】:

我认为 tar 似乎工作得更快,因为读取和写入发生在不同的进程中,并且不会相互等待。它还有一个好处是它在保留链接和权限等细节方面往往更聪明:

tar cf - path | ( cd /my/new/location ; tar xf - )

【讨论】:

    猜你喜欢
    • 2021-07-24
    • 2018-09-07
    • 2012-07-02
    • 2014-04-25
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多