首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时从本地文件夹并行复制到远程服务器

同时从本地文件夹并行复制到远程服务器
EN

Unix & Linux用户
提问于 2018-11-17 22:09:00
回答 1查看 2.4K关注 0票数 4

我有一个多个文件夹,每个文件夹大约有1500个文件。我有一种for循环,遍历每个文件夹,然后根据环境将文件发送到一个或4个远程主机。目前我正在使用rdist。我拥有的几乎每个文件都在每天进行更改,有时只是更改文件中的日期和时间。

我遇到了一些命令,如pscp、prsync以及GNU并行。我在多个主机上进行了pscp和rdist的实验,两者的结果相似。

  1. rdist和prsync在性能上有什么区别?我的理解是prsync可以在多个主机上迁移文件,rdist也是如此。我从我的测试中了解到,无论是prsync还是rdist,不要在单个主机上并行复制多个文件,它们只能在parallel.So中的多个主机上并行复制文件,这两者在性能方面有什么不同吗?对于rdist,我的脚本创建了一个像HOSTS( user@server user@server 2 user@server 3)这样的远程文件,运行:(/var/inputpath/ -> ) ${HOSTS} install (/var/outputpath/ /pathto ),然后运行rdist,类似于以下rdist/dist/pathto ssh。
  2. 我使用cp测试了GNU并行的本地副本,并使用zip进行了压缩。它真的非常快。这允许并行复制多个文件,即使在本地计算机上也是如此。

因此,我的问题是,是否有可能将GNU与pscp、rdist或prsync并行?

EN

回答 1

Unix & Linux用户

发布于 2019-07-12 12:53:06

如果更改很少,rsync在同步2DID方面是非常出色的。它甚至可以使用-z压缩数据存储。

不幸的是,rsync非常依赖延迟,因此它通常无法填充一个大连接(例如,1 Gbps)。

这可以通过并行运行多个rsyncs来缓解。

来自man parallel

示例:并行rsync是一个很好的工具,但有时它不会占用可用的带宽。在高速连接上复制几个大文件时,这通常是一个问题。下面将启动服务器页脚上的src中的每个大文件的rsync到服务器fooserver上的dir: cd src;find。-type f -size +100000 \并行-v ssh fooserver mkdir -p /dest-dir/{//};\ rsync -s -Havessh {} fooserver:/ end /{}创建的脏文件可能最终具有错误的权限,并且较小的文件不会被传输。要修复这些rsync,最后一次运行rsync :rsync -Havessh src/fooserver:/dest dir/

如果您的文件很小,您可以这样做:

代码语言:javascript
复制
find ... |
  parallel -j10 -X rsync -zR -Ha ./{} fooserver:/dest-dir/

调整-j10,直到找到最佳数目为止。

需要./{}才能使rsync -R生效,从而复制目录结构,而不仅仅是将所有文件复制到一个dir中。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/482407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档