Tenho um grande número de arquivos para copiar. Quero copiar os arquivos em paralelo em um sistema de arquivos do Amazon Elastic File System (Amazon EFS) para minha instância do Amazon Elastic Compute Cloud (Amazon EC2).
Resolução
Use uma das ferramentas a seguir para executar trabalhos em paralelo em um sistema de arquivos do Amazon EFS:
GNU parallel
Conclua as etapas a seguir:
-
Para instalar o GNU parallel, execute os seguintes comandos para o sistema operacional que você usa.
Amazon Linux e RHEL 6:
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
sudo yum install parallel nload -y
Red Hat Enterprise Linux (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
Amazon Linux 2023 (AL2023):
Não há pacotes extras para Enterprise Linux (EPEL) ou repositório do tipo EPEL para AL2023. Em vez disso, instale pacotes das páginas do repositório do GitHub para as ferramentas individuais. Veja nload, sysstat e gnu-parallel no site do GitHub.
Ubuntu:
sudo apt-get install parallel
-
Execute um dos seguintes comandos para copiar os arquivos para o Amazon EFS.
Com o rsync:
sudo time find -L /src -type f | parallel rsync -avR {} /dst
-or-
Sem rsync:
sudo time find /src -type f | parallel -j 32 cp {} /dst
-
Execute o comando a seguir para monitorar o tráfego de rede e a largura de banda no console da aplicação nload:
sudo nload -u M
msrsync
Observação: o msrsync é compatível somente com Python. Execute o script msrsync usando Python versão 2.7.14 ou posterior.
Conclua as etapas a seguir:
-
Execute o seguinte comando para instalar o msrsync:
sudo curl -s https://raw.githubusercontent.com/jbd/msrsync/master/msrsync -o /usr/local/bin/msrsync && sudo chmod +x /usr/local/bin/msrsync
-
Para especificar o número de processos rsync que você deseja executar em paralelo, execute o comando a seguir. Inclua a opção \ -p para mostrar o progresso de cada trabalho:
sudo time /usr/local/bin/msrsync -P -p X --stats --rsync "-artuv" /src/ /dst/
Observação: substitua X pelo número de processos rsync.
fpsync
Conclua as etapas a seguir:
-
Ative o repositório EPEL.
-
Para instalar o pacote fpart, execute os seguintes comandos para o sistema operacional que você usa.
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
Amazon Linux 2023:
Não há repositório EPEL ou do tipo EPEL para o AL2023. Em vez disso, instale pacotes das páginas do repositório para as ferramentas individuais. Veja nload, sysstat e gnu-parallel no site do GitHub.
Ubuntu:
sudo apt-get install fpart
Observação: no Ubuntu, o fpsync faz parte do pacote fpart.
-
Execute o comando a seguir para sincronizar os diretórios /dst e /src:
sudo fpsync -n X /src /dsthttps://github.com/martinda/gnu-parallel
Observação: substitua X pelo número de processos Fpsync que você deseja executar em paralelo.