我有大量檔案要複製。我想要在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的 Amazon Elastic File System (Amazon EFS) 檔案系統上平行執行這些工作。
簡短描述
使用下列其中一個工具在 Amazon EFS 檔案系統上平行執行工作:
- GNU 平行: 如需詳細資訊,請參閱 GNU 作業系統網站上的 GNU 平行。
- msrsync: 如需詳細資訊,請參閱 GitHub 網站上的 msrsync。
- fpsync: 如需詳細資訊,請參閱 Ubuntu 手冊網站上的 fpsync。
解決方法
GNU 平行
1. 安裝 GNU 平行。
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
2. 使用 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
3. 使用 nload 主控台應用程式來監控網路流量和頻寬。
$ sudo nload -u M
msrsync
msrsync 為適用於 rsync 的 Python 包裝函式,可平行執行多個 rsync 程序。
**注意:**msrsync 僅與 Python 相容。使用 Python 2.7.14 版或更新版本執行 msrsync 指令碼。
1. 安裝 msrsync。
$ sudo curl -s https://raw.githubusercontent.com/jbd/msrsync/master/msrsync -o /usr/local/bin/msrsync && sudo chmod +x /usr/local/bin/msrsync
2. 使用 -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 在多個節點 (工作者) 上啟動 rsync 傳輸。
如需有關 fpart 的詳細資訊,請參閱 Ubuntu 手冊網站上的 fpart。
1. 啟動 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 套件的一部分。
2. 使用 fpsync 來同步 /dst 和 /src 目錄。將 X 取代為您想要平行執行的 rsync 程序數目。
$ sudo fpsync -n X /src /dst