我有大量文件要复制。我想在我的 Amazon Elastic Compute Cloud(Amazon EC2)实例上的 Amazon Elastic File System(Amazon EFS)文件系统上并行执行这些任务。
简短描述
使用以下工具之一在 Amazon EFS 文件系统上并行运行作业:
- GNU parallel: 有关详细信息,请参阅 GNU 操作系统网站上的 GNU Parallel。
- msrsync: 有关详细信息,请参阅 GitHub 网站上的 msrsync。
- fpsync: 有关详细信息,请参阅 Ubuntu 手册网站上的 fpsync。
解决方法
GNU parallel
- 安装 GNU parallel。
Amazon Linux 和 RHEL 6:
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
$ sudo yum install parallel nload -y
RHEL 7:
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install parallel nload -y
Amazon Linux 2:
$ sudo amazon-linux-extras install epel
$ sudo yum install nload sysstat parallel -y
Ubuntu:
$ sudo apt-get install parallel
- 使用 rsync 将文件复制到 Amazon EFS:
$ sudo time find -L /src -type f | parallel rsync -avR {} /dst
或
$ sudo time find /src -type f | parallel -j 32 cp {} /dst
- 使用 nload 控制台应用程序监控网络流量和带宽。
$ sudo nload -u M
msrsync
msrsync 是 rsync 的 Python 包装器,可并行运行多个 rsync 进程。
**注意:**msrsync 仅与 Python 兼容。使用 Python 版本 2.7.14 或更高版本运行 msrsync 脚本。
- 安装 msrsync。
$ sudo curl -s https://raw.githubusercontent.com/jbd/msrsync/master/msrsync -o /usr/local/bin/msrsync && sudo chmod +x /usr/local/bin/msrsync
- 使用 -p 选项指定要并行运行的 rsync 进程的数量。将 X 替换为 rsync 进程数。**-**P 选项显示每个作业的进度。
$ sudo time /usr/local/bin/msrsync -P -p X --stats --rsync "-artuv" /src/ /dst/
fpsync
fpsync 工具使用 fpart 和 rsync 并行同步目录。它可以在本地运行多个 rsync 进程,也可以通过 SSH 在多个节点(Worker)上启动 rsync 传输。
有关 fpart 的详细信息,请参阅 Ubuntu 手册网站上的 fpart。
- 激活 EPEL 存储库,然后安装 fpart 包。Amazon Linux 和 RHEL 6:
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
$ sudo yum install fpart -y
RHEL 7:
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install fpart -y
Amazon Linux 2:
$ sudo amazon-linux-extras install epel
$ sudo yum install fpart -y
Ubuntu:
$ sudo apt-get install fpart
**注意:**在 Ubuntu 中,fpsync 是 fpart 包的一部分。
- 使用 fpsync 同步 /dst 和 /src 目录。将 X 替换为要并行运行的 rsync 进程的数量。
$ sudo fpsync -n X /src /dst